关于react父组件更新,子组件无更新现象分析

今天在封装一个滑动选择组件遇到个怪事,父组件状态记忆之前的选择,重新进入父组件所在界面那么更新之前选择的状态,但是组件并没有更新到这个状态。多次检查发现子组件没有随父组件的更新而更新。
子组件使用如下:

<Picker
    title={this.state.title}
    data={this.state.datalist}
    cols={1}
    value={this.state.valueArr}
    onChange={(v)=> this.onChange(v)}
    onOk={(v) => this._selectDj(v)}
>

关键点在于 value={this.state.valueArr},使用的是state值,不是props值,所以子组件没有随父子组件一起更新。

查阅资料:子组件显示父组件传来的props 做更新存在两种方法:

1、子组件直接使用props值

class Child extends Component {
    render() {
        return <div>{this.props.someThings}</div>
    }
}

2、在将 status 通过 componentWillReceiveProps 生命周期方法 更新

class Child extends Component {
      constructor(props) {
        super(props);
        this.state = {
          someThings: props.someThings
        };
      }
      componentWillReceiveProps(nextProps) {
        this.setState({someThings: nextProps.someThings});
      }
      render() {
        return <div>{this.state.someThings}</div>
      }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 8,526评论 1 33
  • 40、React 什么是React?React 是一个用于构建用户界面的框架(采用的是MVC模式):集中处理VIE...
    萌妹撒阅读 1,058评论 0 1
  • 目前,react组件有三种写法,分别是es5的createClass写法,es6的class写法,以及statel...
    ZoomFunc阅读 1,855评论 0 1
  • 起步 安装官方脚手架: npm install -g create-react-app 创建项目: create-...
    Twoold阅读 1,327评论 0 0
  • 梦到在踢足球,踢了好几个没水平的球,啥不懂就知道往里踢,应该是腿难受才醒的吧,这种难受从前很多年一直困扰着我,还有...
    惆怅客客人间阅读 304评论 0 0