【发布时间】:2023-09-11 11:05:01
【问题描述】:
我正在尝试了解如何将 redux-saga 连接到 NextJS,并遵循他们提供的示例代码 -- https://github.com/zeit/next.js。我知道可以从getInitialProps 中加载数据,但我不明白调用Component.getInitialProps 发生了什么:
class MyApp extends App {
static async getInitialProps({Component, ctx}) {
let pageProps = {}
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps({ctx})
}
return {pageProps}
}
render() {
const {Component, pageProps, store} = this.props
return (
<Container>
<Provider store={store}>
<Component {...pageProps} />
</Provider>
</Container>
)
}
}
export default withRedux(createStore)(withReduxSaga({async: true})(MyApp))
这是否允许加载页面的 getIntialProps 中的所有异步加载?也就是说,在index.js我们有代码
class Index extends React.Component {
static async getInitialProps (props) {
const { store, isServer } = props.ctx
store.dispatch(tickClock(isServer))
if (!store.getState().placeholderData) {
store.dispatch(loadData())
}
return { isServer }
}
componentDidMount () {
this.props.dispatch(startClock())
}
render () {
return <Page title='Index Page' linkTo='/other' NavigateTo='Other Page' />
}
}
thisgetInitialProps 会等到所有数据加载完毕后再返回吗?它如何知道何时加载?
非常感谢任何帮助!
【问题讨论】:
标签: javascript reactjs redux redux-saga next.js