原理
React传递数据是单向数据流,两个组件必须有关系才可以传值。
而兄弟组件间并无直接关系,所以需要借助父组件。
兄弟组件传值原理:
简单的逻辑是这样:子组件1传值给父组件,父组件再传给子组件2。
- 子组件1通过函数参数传值给父组件。
- 父组件利用子组件1传来的值改变自身state中的某个值。
- 由于父组件将自身state的那个值传给子组件2,而现在
state
发生改变 ,子组件2会重新渲染,实现子组件1传值到
这里用到了state
和更新dom
的知识,不知道的可以看看。前边的文章或百度。
代码实现
现有三个组件,父组件App
,子组件1Header
,子组件2Home
,Home
比Header
小2岁。
实现功能:改变Header
的年龄,且同步更新Home
的年龄。
App.js
1 | import React, { Component } from 'react'; //固定写法 |
Header.js
1 | import React, { Component } from 'react'; //固定写法 |
Home.js
1 | import React, { Component } from 'react'; //固定写法 |
具体过程
两个子组件本来就是12岁和10岁,无法查看传值效果。
所以先点击makeolder
按钮,可以看到Header
年龄变为15。
再点击告诉App我几岁
按钮。
子组件1Header
通过一个回调函数将自己的年龄传给父组件App
,父组件再用Header
传来的年龄更新自己的state;
由于父组件App
给子组件2Home
传的参数是state
中的一个值,所以子组件2变化的部分会重新渲染,实现子组件1传值给子组件2。
作者:@臭咸鱼
本文为作者原创,转载请注明出处:https://chouxianyu.github.io
欢迎转发和评论!