原理
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
欢迎转发和评论!