【问题标题】:React Hook not updating state for some reasonReact Hook 由于某种原因没有更新状态
【发布时间】:2021-08-02 17:07:23
【问题描述】:

您好,我正在尝试进行 API 调用,该函数的状态更改很少,但状态更改未按预期工作

const [ready, setReady] = useState(false);
const [loading, setLoading] = useState(false);
const [previewData, setPreviewData] = useState({});
const [reportGenerateProgress, setReportGenerateProgress] = useState('');

const fetchData = async (e) => {
        const reports = ['a', 'b', 'c'];
        const reportProgress = ['1', '2', '3', '4']
        setLoading(true)
        const params = {
            key: e.key,
            value: e.value,
            preview: true,
            report_type: e.key === 'account' ? "ACCOUNT" : "TAG",
            case_sensitive: false
        }
        for (const [i, report] of reports.entries()) {
            console.log(loading, previewData) // false, {}
            setReportGenerateProgress(reportStatus[i + 1])
            params['report_id'] = report;
            const data = {[report]: "test"};
            setPreviewData({...previewData, [report]: data});
            console.log(loading, previewData) // false, {}
        }
        console.log(loading, previewData) //false, {}
    }

有人能指出问题吗?我想不通。

谢谢!

【问题讨论】:

  • 你为什么要设置previewData两次?
  • 抱歉@RoboRobok,该片段正在调试代码
  • 好的,但是你在哪里取东西?
  • 这个函数作为按钮点击合成事件的动作执行

标签: reactjs react-hooks state


【解决方案1】:

你不能在setState之后执行console.log状态。

你可以通过使用类似的东西看到useEffect钩子的变化

useEffect({console.log(loading, previewData)}, [loading, previewData]);

【讨论】:

  • 嗨@Malay。我试过了,但结果还是一样。
猜你喜欢
  • 2021-04-13
  • 2020-03-03
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 2014-12-27
相关资源
最近更新 更多