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

前言

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
  })
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 为什么 你当时对我好又为什么 现在变得冷淡了我知道 爱要走难阻挠反正不是我的 我也不该要你和我 曾经有共同爱好谁的...
    Super安浅浅阅读 5,609评论 27 25
  • 【同读一本书】2016-03-08-019 《影响力》 【原文】:4.6% {专家解读:可见尔虞我诈的情况并不是人...
    肖楠Alex阅读 2,828评论 6 0
  • 进价×数量=成本 售价×销售数量=收入 产值呢? 售价×产量=产值
    馨莜婧阅读 2,972评论 0 1
  • 听说去养老院不用准备什么东西,聊聊家常,捶捶腿而已。很多人就真的毫无准备地去了,我也不例外。 昨天报名参加了学校青...
    小妖景阅读 3,550评论 5 4

友情链接更多精彩内容