nextjs getInitialProps getDerivedStateFromProps

时间:2018-07-02 10:25:21

标签: reactjs serverside-rendering nextjs

我有一个场景,我是否想获得调用 getInitialProps (从服务器或客户端执行的异步调用)的好处,但是我需要将该查询的结果存储在React状态中组件而不是类。

我尝试过的是先调用 getInitialProps ,然后调用 getDerivedStateFromProps 将在Intial props函数调用中注入的数据存储在状态中。

运行服务器端渲染时,这是否会是一种不好的做法或导致某些问题?

示例:

static async getInitialProps() {    
  const data = await getUserCollection();

  return {
    userCollection: data,  
  }
}

static getDerivedStateFromProps(nextProps, prevState) {
  if(nextProps.userCollection !== prevState.myStateCollection) {
    return ({
      myStateCollection: nextProps.userCollection,
    })
  } else {
    return null;
  }
}

状态和道具定义(打字稿):

interface Props {
  userCollection: UserEntity[],
}

interface State {
  myStateCollection : UserEntity[];
}

0 个答案:

没有答案