在setState钩子之后不使用useEffect钩子的情况下,此代码如何运行?

时间:2020-03-04 21:58:04

标签: javascript reactjs react-native

我正在研究博览会条形码扫描仪,在他们的示例中,它们具有在setState挂钩之后运行的功能。我只想了解为什么在调用该钩子之后为什么要运行它,因为我的理解是一旦调用setState钩子,它就会重新渲染该组件。

我指的是handleBarCodeScanned函数。在setScanned(true)之后如何调用警报?

1 个答案:

答案 0 :(得分:2)

设置状态是异步的。这是因为您可以在某些事件处理程序中设置多个状态位。例如,您可以:

const handleBarCodeScanned = ({ type, data }) => {
    setScanned(true);
    setData(data);
    setScanType(type);
};

然后,在完成所有操作后,将使用刚刚更改的所有状态重新渲染组件。在内部,react只是在更改状态时将该组件标记为需要更新,然后(非常简短地)稍后它实际上开始进行渲染。

因此,因为它在更改状态后一直执行,所以在更改状态后还可以执行其他操作。例如显示警报,启动HTTP请求或您的应用程序需要的任何内容。

相关问题