在 NextJs 中的组件之间共享 props

Posted

技术标签:

【中文标题】在 NextJs 中的组件之间共享 props【英文标题】:Share props between components in NextJs 【发布时间】:2021-09-26 15:44:10 【问题描述】:

项目文件结构如下:

components
├─homepage
│ ├─index.jsx
├─location
│ ├─index.jsx
pages
│ ├─location
│ │ ├─[id].jsx
│ ├─presentation
│ │ ├─[id].jsx
│ ├─_app.jsx
│ ├─index.jsx
functions
├─dataFetch.js

pages/index.jsx 具有getInitialProps() 内部具有数据获取功能。我需要将 api 获取结果数据分享给 pages/location/[id].jsxpages/presentation/[id].jsx

我对这个问题的解决方案是开始使用 redux(我不仅在这种情况下需要它)。 但是,它会在网站首次加载时页面呈现道具出现问题。

例如,如果我转到http://localhost:3000 - 它会正常工作,因为数据是在pages/index.jsx 中获取的。 但是如果我转到http://localhost:3000/location/12345 - 将不会获取任何数据,因为我没有在该页面上调用getInitialProps()

我使用 redux 解决此问题的方法是否正确?如果是这样,我应该从哪里获取数据?

【问题讨论】:

【参考方案1】:

我会说添加一个 AppWrapper,它在上下文提供程序 https://reactjs.org/docs/context.html#reactcreatecontext 内呈现子项。并将其放入 _app.jsx

_app.jsx 也可以是 Redux 获取数据的地方。

【讨论】:

以上是关于在 NextJs 中的组件之间共享 props的主要内容,如果未能解决你的问题,请参考以下文章

React中的render props,让组件复用(共享)变得简单,你还不赶紧掌握它?

NextJS 中每个组件的共享/获取数据

在 Vuejs 中跨不同组件共享数据

在 Vuejs 中跨不同组件共享数据

Vuex概述

vuex 实现vue中多个组件之间数据同步以及数据共享。