当路由到具有不同参数的同一页面时,NextJS 初始状态不会更新
NextJS initial state is not updating when routing to same page with different params
这个项目正在使用 NextJS
我有一个 URL 看起来像这样的页面
localhost:3000/first/second
我在该页面上调用 getInitialProps
。数据按原样从 getInitialProps
传递到组件,我正在使用该数据设置初始状态
const Index = ({ data }) => {
const [state, setState] = useState(data.results)
}
现在当我将用户发送到
localhost:3000/first/third
getInitialprops
被称为应该的。 data
,它是组件的一个参数,总是用 getInitialProps
的最新结果填充,但 state
不是。它填充了其中的先前数据。当我进行客户端路由时,它没有重置。只有当我硬刷新页面时。
正如 NextJS GitHub
上的建议,我厌倦了在 ```getInitialProps`` 中添加 data.key = data.id
,它始终是一个不同的数字来强制更新状态,但它不起作用。
任何信息都会有用。
感谢您的宝贵时间:)
使用 NextJS 时,getInitialProps
仅在页面首次呈现之前被调用。在随后的页面渲染(客户端路由)中,NextJS 在客户端执行它,但这意味着在页面渲染之前数据不可用。
来自docs:
For the initial page load, getInitialProps will run on the server only. getInitialProps will then run on the client when navigating to a different route via the next/link component or by using next/router.
您需要 useEffect
来同步状态:
const Index = ({ data }) => {
const [state, setState] = useState(data.results);
useEffect(() => {
setState(data.results);
}, [data]);
}
这个项目正在使用 NextJS
我有一个 URL 看起来像这样的页面
localhost:3000/first/second
我在该页面上调用 getInitialProps
。数据按原样从 getInitialProps
传递到组件,我正在使用该数据设置初始状态
const Index = ({ data }) => {
const [state, setState] = useState(data.results)
}
现在当我将用户发送到
localhost:3000/first/third
getInitialprops
被称为应该的。 data
,它是组件的一个参数,总是用 getInitialProps
的最新结果填充,但 state
不是。它填充了其中的先前数据。当我进行客户端路由时,它没有重置。只有当我硬刷新页面时。
正如 NextJS GitHub
上的建议,我厌倦了在 ```getInitialProps`` 中添加 data.key = data.id
,它始终是一个不同的数字来强制更新状态,但它不起作用。
任何信息都会有用。
感谢您的宝贵时间:)
使用 NextJS 时,getInitialProps
仅在页面首次呈现之前被调用。在随后的页面渲染(客户端路由)中,NextJS 在客户端执行它,但这意味着在页面渲染之前数据不可用。
来自docs:
For the initial page load, getInitialProps will run on the server only. getInitialProps will then run on the client when navigating to a different route via the next/link component or by using next/router.
您需要 useEffect
来同步状态:
const Index = ({ data }) => {
const [state, setState] = useState(data.results);
useEffect(() => {
setState(data.results);
}, [data]);
}