Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在componentDidUpdate中,prevProps和current props是相同的_Reactjs_Next.js - Fatal编程技术网

Reactjs 在componentDidUpdate中,prevProps和current props是相同的

Reactjs 在componentDidUpdate中,prevProps和current props是相同的,reactjs,next.js,Reactjs,Next.js,像这里的许多其他帖子一样,我在componentDidUpdate函数中也得到了同样的支持。这是相关代码 Child componentDidUpdate(prevProps, prevState) { if (prevProps.data !== this.props.data) { console.log('Next up mounted') } } Parent static async getInitialProps({ query }) { cons

像这里的许多其他帖子一样,我在componentDidUpdate函数中也得到了同样的支持。这是相关代码

Child

componentDidUpdate(prevProps, prevState) {
    if (prevProps.data !== this.props.data) {
      console.log('Next up mounted')
    }
}
Parent

static async getInitialProps({ query }) {
   const props = axios
      .post('http://localhost:3000/api/club', { clubId: query.clubid })
      .then((res) => {
         //...Do stuff here
         return {
             ...
             data: res.data.payload,
             ...
         }

updatePbd(newBet) {
    let newPbd = [newBet[0]].concat(this.state.clubBetsPending)
    let allBets = this.state.clubBetsResulted.concat(newPbd)
    this.setState({ data: allBets })
}

render() {
    return (<>
        {this.state.data && (
        <NextUp
            data={this.state.data}
        />
        )}
    </>)
}
静态异步getInitialProps({query}){
const props=axios
.post('http://localhost:3000/api/club“,{clubId:query.clubId})
。然后((res)=>{
//…在这里做事
返回{
...
数据:res.data.payload,
...
}
updatePbd(新设置){
让newPbd=[newBet[0]].concat(this.state.clubBetsPending)
让allBets=this.state.clubBetsResulted.concat(newPbd)
this.setState({data:allBets})
}
render(){
返回(
{this.state.data&&(
)}
)
}
因此,理论上,当我调用updatePbd并向其传递单个数组元素时,它应该被附加到数组中,并更新导致子组件运行控制台日志的状态。 首先,即使在第一次加载时它也不会运行,所以它不应该总是从prevProps=null开始,然后再从props=something开始吗? 无论如何,在函数运行时,prevProps和current.props是相同的。
谢谢在这种情况下,第一次加载时,初始prevProps不应为空

结帐

getInitialProps在页面中启用服务器端呈现,并允许 要进行初始数据填充,它意味着发送包含数据的页面 已经从服务器填充。这对于SEO特别有用

另外,考虑到您的状态是一个数组,使用严格相等(==)检查它,这意味着您的检查可能总是正确的。您可能希望检查数组的深度相等检查,以防它们都具有相同的值。这是一个很好的问题,关于比较数组,有很多很好的答案