javascript - Next.js React 组件 getInitialProps 不绑定(bind) Prop

标签 javascript reactjs next.js

在 Next.js 中,您可以在 React 组件中使用一个生命周期方法,该方法在首次加载时绑定(bind)到服务器端渲染。

我尝试使用 the ZEIT tutorial 中介绍的这个功能(或者 on their Github ),但是 this.props 似乎没有得到函数返回的 JSON。 当我单击该组件时,控制台打印一个空对象。

import React from 'react'
import 'isomorphic-fetch'
export default class extends React.Component {
    static async getInitialProps () {
        const res = await fetch('https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json')
        const data = await res.json()
        return { data }
    }
    print() {
        console.log(this.props);
    }
    render() {
        return <div onClick={this.print.bind(this)}>print props</div>
    }
}

最佳答案

我遇到这个问题是因为我在添加 Redux 时导致我的 _app.js(即 NextJS Custom App)出现问题(不是 Redux 问题)。当我开始在页面中使用 getInitialProps 时,我的 Prop 在渲染时是空的,尽管静态调用中有数据。原因是我的 _app.js 中 pageProps 的传播不正确。

所以在我的例子中,修复正在改变,在自定义 _app.js getInitialProps 中,这个:

return {
  ...pageProps,
  initialReduxState: reduxStore.getState()
}

到:

return {
  pageProps: {...pageProps},
  initialReduxState: reduxStore.getState()
}

.. 所以在 NextJS 文档链接中看到的渲染方法可以连接它们。

关于javascript - Next.js React 组件 getInitialProps 不绑定(bind) Prop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40889738/

相关文章:

javascript - 使用java脚本在div中随机定位一个绝对元素

javascript - 样式组件/ react

continuous-integration - Gitlab CI 部署失败 : "bash: pm2: command not found" during gitlab-ci. yml 运行

javascript - 升级到 NextJS 9.0 后如何修复 React Hooks?

reactjs - NextJS,在 getServerSideProps 中预加载 Redux 数据

javascript - 非常奇特 - 第一次提交一次,第二次提交两次,第三次提交三次..等等..我做错了什么?

javascript - 如何在 Angular 中制作 ngFor 字典?

javascript - 滚动到下一个元素

javascript - 组件的状态未使用 select 和 onChange 处理程序更新

javascript - 将 Node api 数据提供给客户端 js