在React中填充localstorage中的状态

时间:2016-01-16 09:23:44

标签: reactjs

在我的基于react + flux的应用程序中,我进行API调用以获取React Component的componentDidMount()函数中的数据。但是为了改善用户体验,我还询问localstorage以查看是否可以从中填充用户界面&因此我更新了州。

到目前为止,我一直在调用localstorage函数中的componentWillMount()进行查询,从而避免因stateChange而导致额外的render()调用。

但是在实现服务器端渲染时,React会抛出一个错误,说"渲染的服务器端HTML与客户端渲染不匹配:Checksum失败"。出现此错误的原因是,服务器无法读取localstorage,因此仍然会进行初始状态渲染。但客户可以阅读localstorage&因此,初始渲染将是不同的。

所以我对社区的问题是,有没有更好的方法来实现这一目标?要在初始渲染中使用localstorage填充UI,而不是在第二次渲染调用&仍然使用服务器端渲染而不会导致"校验和失败"客户反应错误?

1 个答案:

答案 0 :(得分:0)

  

“过早的优化是万恶之源”

现在,我们可以工作了。

问题是,如何为初始渲染同步SSR状态和客户端状态?

服务器对客户端了解什么?

请求详细信息,可能是IP,登录状态等

我认为您应该以与登录相同的方式来处理此问题:Cookies

Cookie允许您将一些数据附加到客户端发送给服务器的每个请求中。 重要警告:如果您输入过多数据,则会出现网络性能问题

您可以对描述每个主题选项的Javascript对象(JSON)进行字符串化,并将其存储在cookie中。

然后,在开始SSR之前,您要解析该cookie并将其用于初始化状态服务器端。

我不能给你一个例子,因为这需要很多时间,但是我想你明白了。

祝你好运