React组件通信技巧
来源:互联网 发布:数据库关系图 连线 编辑:程序博客网 时间:2024/06/10 03:58
效果图
http://www.jianshu.com/p/8ed3a060f636
点击查看Github完整源码
1.父向子通信
- 直接标签中插入参数即可
//number只是个例子let _number = this.state.number<Child number={_number} />
需要注意,_number 可以为普通参数、this.xxx 参数、也可以是 this.state.xxx 参数,其中this.state.xxx参数若发生改变,会导致 Child 重新渲染
2.子向父通信
- 需要从 Parent 处接一个绑定了父组件的函数,然后在 Child 内部调用修改父的相关参数,达到效果
//从父组件接函数childToParent() { let _backNumber = this.state.backNumber this.setState({ backNumber: _backNumber + 1 })}let _childToParent = this.childToParent.bind(this)<Brother childToParent={_childToParent} /><div>{'子向父通信:' + _backNumber}</div>//子组件触发函数let _childToParent = this.childToParent.bind(this)<button onClick={_childToParent}>子向父通信</button>
同样,可以修改父组件的 this.state.xxx( this.setState() 触发渲染),也可以修改this.xxx等值
3.通用组件通信方式(包括兄弟组件)
理论上,掌握了子向父通信与父向子通信,可以处理兄弟组件通信,但是如果层级过深,这种方式极度麻烦
建议使用 Event 对象处理嵌套层级过深的组件通信(当然包括兄弟组件通信)
//建议将Event相关单独封装模块使用//event.jsexport var events = { ctc: 'ctc', ctp: 'ctp', ptc: 'ptc', bts: 'bts', stb: 'stb'}export var sendEvent = (eventName, params) => { var event = new Event(eventName) event.params = params document.dispatchEvent(event)}export var catchEvent = (eventName, callback) => { document.addEventListener(eventName, e => callback(e))}export var removeCatch = (eventName, callback) => { document.removeEventListener(eventName, callback)}//brother.js 发送组件import {events, sendEvent} from './event'<button onClick={_brotherToSister}>Brother向Sister通信</button>brotherToSister() { let _obj = { message: 'brother to sister' } sendEvent(events.bts, _obj)}//sister.js 接收组件import {events, catchEvent} from './event'constructor() { super() this.state = { message: '' } //防止多次引用 this._brotherToSister = this.brotherToSister.bind(this)}componentDidMount() { catchEvent(events.bts, this._brotherToSister) //会造成多次引用// catchEvent(events.bts, this.brotherToSister.bind(this))}componentWillUnmount() { removeCatch(event.bts, this._brotherToSister)}brotherToSister(e) { this.setState({ message: e.params.message })}<div> {'message: ' + _message}</div>
点击查看Github完整源码
React
0 0
- React组件通信技巧
- react组件通信
- react组件间通信
- React组件间通信
- React -- 组件间通信
- React 组件间通信
- React 组件通信
- react 组件通信
- React 各种组件关系通信
- React组件之间的通信
- react native组件通信以及
- react组件之间的通信
- react组件之间的通信
- React组件之间的通信
- React 各种组件关系通信
- react native组件通信方式
- React 各种组件关系通信
- React 组件间的通信
- 帧动画
- <ps> ps aux 和ps -aux和 ps -ef的选择
- Glide缓存图片清除缓存,百度地图定位
- 亲和性分析,分析物品之间的相关性
- C语言学习历程——编程练习3——01
- React组件通信技巧
- 声明式异常处理
- 测试基础知识 一
- SVN使用
- vim 设置
- IP3与IMD3的区别解释
- App移动端项目管理
- 机器学习算法总结
- SpringBoot 的 Filter