React 项目中使用 ProTable 展示风险数据并根据状态筛选

本示例演示了如何在 React 项目中使用 ProTable 展示风险数据,并根据风险状态进行筛选。

代码示例:

const [riskData, setRiskData] = useState<any>([]);

const getRiskByProject = async (value: string) => {
  const values = form.getFieldsValue();
  const weeks = moment(values.weeklyTime).startOf('week').format('wo');
  const params = {
    bpProjectId: budgetKey,
    week: weeks,
    weeklyTime: `${moment(values.weeklyTime).startOf('week').format('YYYY-MM-DD')} ~ ${moment(
      values.weeklyTime,
    )
      .endOf('week')
      .format('YYYY-MM-DD')}`,
    startTime: moment(values.weeklyTime).startOf('week').format('YYYY-MM-DD'),
    endTime: moment(values.weeklyTime).endOf('week').format('YYYY-MM-DD'),
    riskStatusList: value.split(','),
  };
  setLoading(true);
  try {
    const { data } = await getRiskByProjects(params);
    if (!data) return;
    setLoading(false);
    
    // const formData = data || [];
    setRiskData(data);
    console.log(data, 138);

    // console.log(formData, 137);
  } catch (error) {}
};

useEffect(() => {
  if (paramsData && budgetKey) {
    getRiskByProject(radioValue);
    getProjectPlan();
    getBudgetProjectDis();
    getBudgets();
    getPage1();
  }
}, [paramsData, budgetKey]);

useEffect(() => {
  LeadingType();
}, []);

const radioChange = (e: any) => {
  getRiskByProject(e.target.value);
};

<ContentCard title='风险'>
  <ProTable
    className={Style.table}
    rowKey={'projectId'}
    // scroll={{ x: 1000, y: 170 }}
    columns={columnsRisk}
    dataSource={riskData}
    options={false}
    bordered
    pagination={false}
    search={false}
    style={{ marginTop: '-24px' }}
    loading={loading}
    headerTitle={
      <div className='mile-check-list'>
        <div className='table-radio-box'>
          <Radio.Group defaultValue={radioValue} buttonStyle='solid' onChange={radioChange}>
            <Radio.Button value={'PROCESSING,APPLY_CLOSING,MAKING_MEASURE'}>
              未关闭
            </Radio.Button>
            <Radio.Button value={'SHUTDOWN_HAS_OCCURRED,PROCESS_OFF'}>已关闭</Radio.Button>
          </Radio.Group>
        </div>
        <div className='details-flex'>
          数据截止:<span style={{ fontSize: '12px' }}>{paramsData?.createTime}</span>
        </div>
      </div>
    }
  />
</ContentCard>

**问题分析:**

点击'已关闭'后,页面数据未更新,可能是因为没有正确更新 `radioValue` 状态导致 `getRiskByProject` 函数没有被正确调用。

**解决方案:**

1. **检查 `radioValue` 状态更新:**确认 `radioChange` 函数中是否正确更新了 `radioValue` 状态,可以使用 `console.log(radioValue)` 打印 `radioValue` 值来验证。

2. **确保 `getRiskByProject` 函数被调用:**确认 `radioChange` 函数中是否正确调用了 `getRiskByProject` 函数,并将更新后的 `radioValue` 传入。

**优化建议:**

* 使用 `useEffect` 钩子监听 `radioValue` 状态的变化,并在状态改变时自动调用 `getRiskByProject` 函数更新数据。
* 使用 `console.log` 打印 `radioValue` 和 `riskData` 的值,以便在开发过程中更方便地调试问题。

**代码优化:**

```javascript
useEffect(() => {
  if (radioValue && paramsData && budgetKey) {
    getRiskByProject(radioValue);
  }
}, [radioValue, paramsData, budgetKey]);

通过以上优化,就可以确保在点击 '已关闭' 后,页面数据能及时更新。

React 项目中使用 ProTable 展示风险数据并根据状态筛选

原文地址: https://www.cveoy.top/t/topic/oAQm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录