Javascript 反应本机渲染两次

Javascript 反应本机渲染两次,javascript,reactjs,react-native,Javascript,Reactjs,React Native,从新页中的异步存储调用状态时。我发现了错误,然后尝试在呈现函数中记录console.log状态。我发现console.log两次,第一个控制台为null,第二个控制台为AsyncStorage中的状态。为什么会这样?如何解决此问题?React将根据需要多次调用render以反映状态对象上的更改,如果异步获取数据并更新状态,则在组件首次呈现时,以及在获取数据并更新状态后,将再次看到console.log消息 换句话说,按照预期工作,如果您只想只记录一次任何消息,请尝试将此行移动到组件构造函数或co

从新页中的异步存储调用状态时。我发现了错误,然后尝试在呈现函数中记录console.log状态。我发现console.log两次,第一个控制台为null,第二个控制台为AsyncStorage中的状态。为什么会这样?如何解决此问题?

React将根据需要多次调用render以反映状态对象上的更改,如果异步获取数据并更新状态,则在组件首次呈现时,以及在获取数据并更新状态后,将再次看到console.log消息


换句话说,按照预期工作,如果您只想只记录一次任何消息,请尝试将此行移动到组件构造函数或componentDidMount方法。

如果您异步获取数据并更新状态,React将调用render以反映状态对象上的更改,在第一次呈现组件时,以及在获取数据和更新状态后,您将再次看到console.log消息


换句话说,按照预期工作,如果您只想只记录一次任何消息,请尝试将此行移动到组件构造函数或componentDidMount方法。

添加一些代码,以便我们可以帮助您。Reacts作业是在组件状态更改时重新提交组件。由于您正在对设备上的某些数据发出异步请求,因此您的组件将在请求完成之前装载。它将console.log null,然后当接收到数据时,它将重新呈现,并再次运行显示数据的控制台日志。这是正常的react行为。@DanielZuzevich好的,谢谢您的回答。添加一些代码,以便我们可以帮助您。Reacts任务是在组件状态更改时重新呈现组件。由于您正在对设备上的某些数据发出异步请求,因此您的组件将在请求完成之前装载。它将console.log null,然后当收到数据时,它将重新呈现,并再次运行控制台日志显示数据。这是正常的react行为。@DanielZuzevich好的,谢谢先生的回答。非常感谢先生,我了解react的工作原理非常感谢先生,我了解react的工作原理