2017-10-16 100 views
-1

当从新页面的AsyncStorage呼叫状态。我发现错误,然后我试图console.log状态在渲染功能我发现console.log两次,第一个控制台为空,第二个是从状态AsyncStorage。为什么会发生?如何解决这个问题呢?反应本机渲染两次

+1

添加一些代码,所以我们可以帮助你。 – zvona

+0

反应工作是在组件状态改变时重新渲染组件。由于您正在对设备上的某些数据发出异步请求,因此您的组件在请求完成之前进行挂载。它会将console.log置空,然后在收到数据时,它将重新渲染,并再次运行控制台日志以显示数据。 –

+1

这是正常的反应行为。 –

回答

0

如果您正在异步获取数据并更新状态,React将根据需要调用渲染次数,以反映对状态对象的更改,您将看到一个console.log消息,因为组件将首次呈现,并且会一次再次提取数据并更新状态。

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

+0

非常感谢您的先生,我了解如何反应工作 – user8784065