我可以将getInitialProps代码移到componentDidMount吗?

时间:2019-05-21 02:07:10

标签: reactjs next.js serverside-rendering

我想将静态getInitialProps中的代码移动到componentDidMount。 但是,getInitialProps中有两个参数(component,ctx),我应该全部使用它们。 我只想知道我是否可以移动代码。 谢谢!

不知道..

// Current
class extends App {
  public static async getInitialProps({Component, ctx}) {
     // Do Something with two parameters
  }
  .
  .
  .
}

// What I want to do
class extends App {
  public componentDidMount() {
    // Do the same thing
  }
  .
  .
  .
}

1 个答案:

答案 0 :(得分:1)

getInitialProps在服务器端和客户端中均可使用,而componentDidMount仅在客户端中可用。因此,不能在componentDidMount中使用它。

如果要使用在componentDidMount内部的getInitialProps中提取的数据,则可以从getInitialProps返回数据并将其用作prop

class extends App{
  static async getInitialProps({ Component, ctx }) {
    //do some data fetching
    return { data };
  }

  constructor() {
    super();
    this.state = {};
  }

  componentDidMount() {
    console.log(this.props.data)
  } 

}