react props更新页面数据没有变化 componentDidUpdate真的有用

子组件将props的值存放到state之后,
(componentDidMount中调用setState或直接给state赋值this.props.xx)
使用state中的值而不是直接调用this.props.xx,
props的更新不会修改state中的值,

(页面数据不会发生变化!!!)、

如果需要时时更新页面数据的话

1 直接使用this.props.xx

render(){
    return (<div>{this.props.type}</div>)   // render中调用this.props
}

但是如果值需要处理,必须放到state中就没办法了

2 在componentDidUpdate()中调用setState

componentDidUpdate()中比较前后props,如果props发生变化,调用setState()重新赋值,会触发组件的更新。

state = {  // 将props的值传递给给state
    type: this.props.type
}

render(){
    return (<div><{this.state.type}/div>)  // render中调用state     
}

/*
重点 重点 重点
*/
componentDidUpdate(prevProps) {
    if (this.props.type!== prevProps.type) { // 比较前后props
        this.setState({  // 如果props发生变化,调用setState()
            type: this.props.type
       })
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值