我想将静态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
}
.
.
.
}
答案 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)
}
}