react 中父子组件的传参及相互调用方法

父→子传值 和 父→子传方法(子组件调用父组件方法)

1. 子组件调用父组件方法

​ 在父组件中:

import React from 'react'
import ChildCom from './childCom.js'
class ParentCom extends React.Component {
    
handleBtnClick() {
    const action = getAddItemAction();
    store.dispatch(action);
}
    
 render() {
 return (
 <div>
 <h1>父组件</h1>
 <ChildCom 
    content={'我是属于父组件的 要传给子组件的内容'}
    handleBtnClick={this.handleBtnClick.bind(this)} // 父组件方法传给子组件调用
    />
 </div>
 )
 }
}
export default ParentCom;

在子组件中:

import React from 'react'
class ChildCom extends React.Component {
 render() {
 return (
 <div>
 <h2>子组件</h2>
 <div>
 {this.props.content} // 子组件通过 props 接收父组件数据
 {this.props.handleBtnClick()} // 子组件通过 props 调用父组件方法
 </div>
 </div>
 )
 }
}
export default ChildCom;
子→父传值 和 子→父传方法(父组件调用子组件方法)

1. 子组件传递作用域 this 给父组件 父组件可以调用子组件方法

2. ref方法可以接收一个回调函数,表示子组件加载完成后执行的方法,回调函数的参数即为子组件的作用域this,把子组件的作用域 this 赋值给父组件,就可以使用父组件中的方法了

​ 在父组件中:

import React from 'react'
import ChildCom from './ChildCom'
class ParentCom extends React.Component {

   getChildValue(value) {
       console.log(value)// '子组件传给父组件的值'
   } 
   lokka(ref) {
      this.child = ref;
   }  

   render() {
   return (
   <div>
   <h1>父组件</h1>
   <ChildCom 
    onValue={this.getChildValue.bind(this)}
    lokka={this.lokka.bind(this)}// 父组件调用子组件方法 1   
    ref={ref => this.child2 = ref} // 父组件调用子组件方法 2  
      /> 
   </div>
   )
   }
   componentDidMount() {
       
      this.child.replay();// 父组件调用子组件方法 1   
      this.child2.replay();// 父组件调用子组件方法 2   
   }
}
export default ParentCom;

​ 在子组件中:

import React from 'react'
class ChildCom extends React.Component {
    
replay = () => {
    console.log("ok");
}
        
        
 render() {
 return (
 <div>
 <h2>子组件</h2>
 <div>
 {this.props.onValue('子组件传给父组件的值')} // 子组件通过调用父组件传过来的onValue方法把参数传到父组件
 {this.props.lokka(this)} // 将自身作用域的this通过lokka传给父组件 方法1
 </div>
 </div>
 )
 }
}
export default ChildCom;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作为一个合格的开发者,不要只满足于编写了可以运行的代码。而要了解代码背后的工作原理;不要只满足于自己的程序...
    六个周阅读 12,718评论 1 33
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,912评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,501评论 1 45
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,232评论 0 5
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,177评论 0 3

友情链接更多精彩内容