【发布时间】:2020-09-19 02:51:30
【问题描述】:
我有一个 next.js 应用程序,它需要将 SESSION 数据拉入全局上下文。目前我有:
// _app.js
const App = ({ Component, pageProps }) => {
const start = typeof window !== 'undefined' ? window.sessionStorage.getItem('start') : 0;
return (
<ElapsedContext.Provider value={start}>
<Component {...pageProps} />
</ElapsedContext.Provider>
)
};
export default App;
我正在像这样使用我的组件:
function MyComponent(props) {
const start = useContext(ElapsedContext);
return (
// something using start;
);
}
但是,当我在组件中使用该上下文时,组件会按预期呈现在页面上,但我得到 Warning: Text content did not match. Server: "0" Client: "5.883333333333345"
我认为是因为它最初传递 0,然后在窗口加载后从 SESSION 存储中提取数字。
- 如何解决此警告?
- 我可以放心地忽略此警告吗?
我已经尝试在 _app.js 文件中使用useEffect(在加载窗口后触发),但是初始状态对于我的组件来说不可用于构建它在初始渲染上构建它需要的东西......
【问题讨论】:
标签: reactjs next.js react-context