reactjs父子组件间的传值


父传子数据  props

FatherComponent.jsx

image

image

image

ChildComponent.jsx

image

父传子方法 props

FatherComponent.jsx

image

image

ChildComponent.jsx

image

带参数的方法:

FatherComponent.jsx

image

image

ChildComponent.jsx

image

image

父组件将自身传给子组件 props

FatherComponent.jsx

image

image

image

ChildComponent.jsx

image

父组件获取子组件的数据 refs

FatherComponent.jsx

image

image

image

ChildComponent.jsx

image

父组件获取子组件的方法 refs

FatherComponent.jsx

image

image

ChildComponent.jsx

image

image

带有参数的方法:

FatherComponent.jsx

image

image

image

ChildComponent.jsx

image

注意:ref绑定的ChildComponent必须是一个class组件,不能是个函数组件。因为React会给class创建组件实例,而不会给函数组件创建实例,你因此可以发现函数组件里没有用this进行实例属性定义。同时ref也可以绑定在普通的标签上面,所以证明了this.refs只是个普通对象,他既可以保存dom元素,也可以保存React组件的实例对象(class组件)

补充

官方实际已经不推荐使用字符串形式的ref(有问题,未来可能删除这个API),而是推荐使用回调ref。

即ref的值是一个回调函数,回调函数有一个element参数,element就是绑有ref属性的dom。

【上面介绍的通过ref来进行父子组件通讯,基本使用没有改变,只是把ref的绑定值进行了更改。】(不再通过this.refs来获取ref绑定的dom)

下面以表单text来进行演示:

image

进行化简后:

image

或者你还可以通过官方新增的API(React.createRef()),来使用ref (个人感觉这种最好理解)

image

与回调ref略微不同,获取dom是通过 this.textInput.current

你还可以通过props和ref结合使用,来获取多次嵌套的子组件中的标签元素,详细做法自行思考。

其实就是通过props把回调函数或者是ref对象(React.createRef())传递下去。

组件的defaultProps和propTypes

defaultProps:用来初始化组件的props属性

ChildComponent.jsx

image

当父组件FatherComponent没有给子组件ChildComponent的props属性传递message参数值时,会使用default值 => message:’这里是默认信息’

如果有传,则会覆盖掉default值。

propTypes:对组件props属性中的值进行类型约束  (is propTypes no prototype)

ChildComponent.jsx

先导入react的依赖模块prop-types

image

image

这里对子组件ChildComponent的props属性中的message进行类型约束,message必须是个string,如果不是string则会报错


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM