在基于react + flux的应用程序中,我进行了API调用以获取componentDidMount()React Component函数中的数据。但是,只是为了改善UX,我还查询到localstorage是否可以从中填充UI并相应地更新状态。
到目前为止,我一直在进行此查询以查询localstoragein componentWillMount()函数,从而避免了render()由于stateChange 造成的额外调用。
但是在实现服务器端渲染时,React引发错误,提示“服务器端渲染的HTML与客户端渲染不匹配:校验和失败”。发生此错误的原因是,服务器将无法读取,localstorage因此仍会携带初始状态进行渲染。但是客户端可以读取localstorage&,因此初始渲染将有所不同。
所以我对社区的问题是,有没有更好的方法来实现这一目标?要使用localstorage初始渲染而不是第二次渲染调用来填充UI ,并且仍然使用服务器端渲染而不会对客户端做出反应而导致“校验和失败”错误?
\n\n\n\xe2\x80\x9c过早优化是万恶之源\xe2\x80\x9d
\n
现在,我们可以让一些东西发挥作用。
\n\n问题是,如何同步初始渲染的 SSR 状态和客户端状态?
\n\n服务器了解客户端的哪些信息?
\n\n请求详细信息,可能是 IP、登录状态等。
\n\n我认为你应该像我们处理登录一样处理这个问题:cookie
\n\nCookie 允许您将一些数据附加到客户端发送到服务器的每个请求。重要警告:如果您放置太多数据,将会出现网络性能问题
\n\n您可以对描述每个主题选项的 Javascript 对象 (JSON) 进行字符串化,并将其存储在 cookie 中。
\n\n然后在启动 SSR 之前,您解析该 cookie 并使用它来初始化您的状态服务器端。
\n\n我无法给你一个例子,因为这需要很多时间,但我想你明白了。
\n\n祝你好运
\n| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |