Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我是否可以确保下次React渲染时将使用最新的状态值?_Reactjs_React Hooks - Fatal编程技术网

Reactjs 我是否可以确保下次React渲染时将使用最新的状态值?

Reactjs 我是否可以确保下次React渲染时将使用最新的状态值?,reactjs,react-hooks,Reactjs,React Hooks,React文档中有很多地方说React可能会将一批状态更改排队,并在以后执行一次 setState()将更改排入组件状态队列并告知React 此组件及其子组件需要使用 更新状态。这是用于更新用户的主要方法 接口以响应事件处理程序和服务器响应 将setState()视为请求,而不是对 更新组件。为了获得更好的感知性能,可能会做出反应 延迟它,然后在一次过程中更新几个组件。反应 不保证立即应用状态更改 setState()并不总是立即更新组件。可能 批处理或将更新推迟到以后。这使得阅读成为一种状态

React文档中有很多地方说React可能会将一批状态更改排队,并在以后执行一次

setState()将更改排入组件状态队列并告知React 此组件及其子组件需要使用 更新状态。这是用于更新用户的主要方法 接口以响应事件处理程序和服务器响应

将setState()视为请求,而不是对 更新组件。为了获得更好的感知性能,可能会做出反应 延迟它,然后在一次过程中更新几个组件。反应 不保证立即应用状态更改

setState()并不总是立即更新组件。可能 批处理或将更新推迟到以后。这使得阅读成为一种状态 就在调用setState()之后,这是一个潜在的陷阱。相反,使用 componentDidUpdate或设置状态回调(设置状态(更新程序、, 回调),其中任何一个都保证在更新后触发 已应用。如果需要根据上一个设置设置状态 状态,请阅读下面的更新程序参数

基本挂钩-useState

const[state,setState]=useState(initialState)

返回一个有状态值,以及一个更新该值的函数

在初始渲染期间,返回的状态(state)与 作为第一个参数传递的值(initialState)

setState函数用于更新状态。它接受一个新的 状态值和使组件的重新呈现排队。

问题1

我的问题是:无论有多少状态更新决定排队在单个批处理上执行,我是否可以依赖以下事实:下一个渲染将使用自上次渲染以来排队的所有更新的最新状态

问题2


我可以依赖于那些对队列作出反应的状态更改的顺序吗?我的意思是,如果我
setState({a:1})
,然后
setState({a:2})
,我可以确定我的状态的最终值将是
2

问题1:不,React只能呈现(例如)更新队列的一半,然后是另一半

问题2:是的。处理更新的顺序可能不像中调用
setState
的顺序那么简单,但最终,插入顺序决定了状态的最新版本


根据我自己的经验,如果同步执行setState,那么下次它呈现所有状态时,所有状态都将是新的。