react 调用子(孙)组件方法
在不是用redux的情况下,我们要使用子(孙)组件上的方法,或者属性
调用子组件
import React, {Component} from 'react'; export default class Parent extends Component { render() { return( <div> <Child onRef={this.onRef} /> <button onClick={this.click} >click</button> </div> ) } //定义一个拿子组件返回值this的函数 onRef = (ref) => { this.child = ref } //调用处理函数 click = (e) => { this.child.myName() } } class Child extends Component { componentDidMount(){ //通过pros接收父组件传来的方法 this.props.onRef(this) } myName = () => alert('子组件fn') render() { return ('ch') } }
步骤分析
在父组件this上先挂载一个child = ref 接收一个参数 ref 子组件传递过来的this
<Child onRef={this.onRef} /> 在子组件上用props传递这个函数
子组件接收这个函数返回自己的this,如:在生命周期中返回这个this
componentDidMount(){ //通过pros接收父组件传来的方法 this.props.onRef(this) }
调用孙组件
我们知道了子组件,那孙组件也就自然而然了,其实就是在子组件上在加一层拿子组件返回值this的函数:<Child onRef={this.onRef} />
import React, {Component} from 'react'; export default class Parent extends Component { render() { return( <div> <Child onRef={this.onRef} /> <button onClick={this.click} >click</button> </div> ) } //定义一个拿子组件返回值this的函数 onRef = (ref) => { this.child = ref } //调用处理函数 click = (e) => { this.child.childFn() } } -----------------------华丽的分割线------------------------------- class Child extends Component { componentDidMount(){ //通过pros接收父组件传来的方法 this.props.onRef(this) } onRef = (ref) => { this.child = ref } childFn = (e) => { this.child.myName() } render() { <Child2 onRef={this.onRef}>我是孙组件<Child2> } } --------------------华丽的分割线------------------------------- class Child2 extends Component { componentDidMount(){ //通过pros接收父组件传来的方法 this.props.onRef(this) } myName = () => alert('孙组件fn') render() { return ('ch') }}
我们可以看到 父组件 => 调用子组件的childFn() => 调用孙组件的myName() 其实最好真正调用的还是 孙组件的函数,只不过是孙组件吧当前的this 传给子组件,子组件再传给父组件
ps:
我们可以看到,在组件中一但跨域比较多的组件,通信起来就比较麻烦,就像以上的那样情况,如果这样的情况多了起来且交叉的数据较多,就会变的特别杂乱,这个时候就推荐使用redux 等状态管理工具来实现,组件中的状态管理
那什么情况下需要用到组件的状态管理呢?
用户的使用方式复杂
不同身份的用户有不同的使用方式(比如普通用户和管理员)
多个用户之间可以协作
与服务器大量交互,或者使用了WebSocket
View要从多个来源获取数据
"如果你不知道是否需要 Redux,那就是不需要它。"
Redux 的创造者 Dan Abramov 又补充了一句。
"只有遇到 React 实在解决不了的问题,你才需要 Redux 。"
更多相关技术文章,请访问HTML中文网!
以上就是react怎么拿组件里的方法的详细内容,更多请关注易知道|edz.cc其它相关文章!