美文网首页【前端技术】专题
React父组件更新props触发子组件的state

React父组件更新props触发子组件的state

作者: JacobMa1996 | 来源:发表于2018-06-29 15:33 被阅读3570次
前言

1、两个多月没写笔记了,原因是...之前在毕业设计,毕业旅行以及各种浪(逃
2、因为几乎休息了一个半月没写过代码,以及没有高强度的工作和学习,导致刚上班的头几天一直打瞌睡,不过到第四天终于缓了一些了,还没熟悉我司的框架,先写了个react的小demo
3、写惯了vue,没有v-model这种东西还真不习惯

组件和props

官网介绍的很详细(官方文档),子组件通过接收props来进行渲染,每次props改变都会重新render

state和生命周期

1、这是react的一个重点,state类似于vue中的data,某种程度上来说它只存在于当前的组件(当然有通过指针改变对象的方式,这里不做讨论),所以也称之为本地状态
2、react中的双向绑定需要通过onChangevalue去实现(其实和vue是一样的,只不过vue封装成了v-model
3、react中的改变状态需要通过setState方式触发,不能直接赋值变量
4、生命周期(以后更新)

问题和解决方案

vue中实现编辑的功能时,可以通过v-model很方便的在子组件中实现
这一功能在react中需要获取默认值(props赋值给input),又需要允许用户输入,所以只能初始化时把props里的值赋给state,通过state来实现编辑,关键props还是可变的(因为一个编辑框对应多条可编辑的数据),所以在改变props时,就要保证子组件的state也能更新。
父组件:

render() {
  return (
    <div>
      <Modal
        {...this.props}
        modal={this.state.modal}
        formData={this.state.formData}
       />
    <div>
  )
}
openModal(data, index) {
  this.setState({
    formData: Object.assign({index: index}, data),
    modal: true
  })
}

子组件,通过componentWillReceiveProps方法获取nextProps

componentWillReceiveProps(nextProps) {
  this.setState({
    index: nextProps.formData.index,
    id: nextProps.formData.id,
    name: nextProps.formData.name,
    grade: nextProps.formData.grade
  })
}

相关文章

  • React父组件更新props触发子组件的state

    前言 1、两个多月没写笔记了,原因是...之前在毕业设计,毕业旅行以及各种浪(逃2、因为几乎休息了一个半月没写过代...

  • React父子组件传值 + 值验证

    父组件向子组件传值 通过props,将父组件的state传递给了子组件。 子组件向父组件传值 父组件将更新数据的方...

  • componentWillUpdate/componentDid

    基础 React.Component 1.state更新或者父组件state更新都会触发 React.PureCo...

  • react父子组件相互传值

    1、父组件------>子组件通过父组件设置(state) --------->子组件 (this.props....

  • react学习笔记

    state props 父组件变量 refs 父组件调用子组件函数

  • React 状态提升

    自组件通过props来接收父组件传递的信息,但是子组件不能更改props,子组件可以定义state,state可以...

  • Vue 组件的通信方式

    props,$emit 父组件传递props到子组件(单项数据流)子组件触发事件,父组件监听子组件事件触发 ref...

  • react-native使用总结

    1、 子组件的state绑定父组件的props值,当props值发生变化,子组件state并没有监听到props值...

  • react 父组件向传子传参

    父组件 子组件 可省略constructor(props) {super(props);this.state={b...

  • 组件间通信

    组件间通信 父组件向子组件通信,子组件之间通信 父组件以自身的state作为作为子组件的props;父组件调用se...

网友评论

    本文标题:React父组件更新props触发子组件的state

    本文链接:https://www.haomeiwen.com/subject/rqjayftx.html