/**
*
* Author: shujun
* Date: 2020-10-25
*/ import React from 'react';
import {message} from 'antd';
import 'antd/dist/antd.css'; export default class Father extends React.Component{
render(){ return <div style={{width: '600px', paddingBottom: '20px', border: '1px solid red' }}>
<h3>father:</h3>
<p>
在父组件上调用子组件的方法,或者父组件访问子组件的内容?<br/>
1. 给子组件传递一个方法:将子组件整个类全部指向this.sonObj变量<br/>
2. 子组件调用父组件传入的函数,把自身赋给父组件
3. 父组件中this.sonObj就相当于子组件的this了,this.sonObj.xxx随便调用子组件方法和state
</p> {/* 3. 父组件中this.sonObj调用子组件方法 */}
<button onClick={() => {this.sonObj.showSonInfo()}}>
调用子组件方法
</button>
{/* 这么写为什么是错误的呢?难道是this.child.showSonInfo还没加载完成?而箭头函数声明写法只是申明,要等点击时候再触发? */}
{/* <button onClick={this.child.showSonInfo}>调用子组件方法</button> */} &nbsp;
<button onClick={() => {message.success("子组件state: "+this.sonObj.state.name)}}>
show 子组件state
</button> {/* 1. 给子组件传递一个方法:将子组件整个类全部指向this.sonObj变量 */}
<Son getSonFuncs={(son)=>{this.sonObj=son}} />
</div>
} } class Son extends React.Component {
state = {
"name": "sbjun"
}; componentDidMount(){
// 2. 子组件调用父组件传入的函数,把自身赋给父组件
this.props.getSonFuncs(this);
} showSonInfo = ()=>{
message.info("我是子组件Son的方法");
} render(){
const name = this.state.name; return <div style={{border: '1px solid green', marginTop: '20px'}}>
<h3>Son:</h3> <button onClick={this.showSonInfo}>子组件事件</button><br/>
<input value={name} onChange={(e)=>{this.setState({name: e.target.value})}}/>
state: name -- {name}
</div>
}
}

运行效果:

代码git: https://gitee.com/loveCode666/study_react/blob/master/src/react_grammar/special_topics/2InvokerSonFunc.js

React父组件如何调用子组件方法,访问子组件State的更多相关文章

  1. 反射工具类.提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class,被AOP过的真实类等工具函数.java

    import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.ap ...

  2. Angular中怎样创建service服务来实现组件之间调用公共方法

    Angular组件之间不能互相调用方法,但是可以通过创建服务来实现公共方法的调用. 实现 创建服务命令 ng g service 服务路径/服务名 比如这里在app/services目录下创建stor ...

  3. Vue中组件通信的几种方法(Vue3的7种和Vue2的12种组件通信)

    Vue3组件通信方式: props $emit expose / ref $attrs v-model provide / inject Vuex 使用方法: props 用 props 传数据给子组 ...

  4. react.js 高阶组件----很简单的实例理解高阶组件思想

    调试代码之前,我设置了两个缓存 分别是username和content 在控制台console设置两个缓存代码 localStorage.setItem('username','老王')localSt ...

  5. uniapp和vue 父向子传值、传方法及子向父传值。(一看就会超级简约)

    1.父向子传值:父组件在引用子组件时通过自定义属性绑定自身需要传递的值(数据),子组件用props:[  '自定义'  ]接收即可使用(props里数据是只读模式).(简约版:子绑定父的属性并用pro ...

  6. React Hooks中父组件中调用子组件方法

    React Hooks中父组件中调用子组件方法 使用到的hooks-- useImperativeHandle,useRef /* child子组件 */ // https://reactjs.org ...

  7. React父组件调用子组件的方法

    16.3.0之前的设置方法为 var HelloMessage = React.createClass({ childMethod: function(){ alert("组件之间通信成功& ...

  8. vue组件之间的通信以及如何在父组件中调用子组件的方法和属性

    在Vue中组件实例之间的作用域是孤立的,以为不能直接在子组件上引用父组件的数据,同时父组件也不能直接使用子组件的数据 一.父组件利用props往子组件传输数据 父组件: <div> < ...

  9. uni-app 子组件如何调用父组件的方法

    1.在父组件methods中定义一个方法: changeType:function(type){ this.typeActive = type; alert(type); } 2.在父组件引用子组件时 ...

  10. vue父组件如何调用子组件的属性或方法

    常常我们需要组件的拆分,就涉及到父子调用的关系,那么父组件如何调用子组件的属性和方法呢? 子组件child <template> <div> {{msg}} </div& ...

随机推荐

  1. 数据库服务器CPU不能全部利用原因分析

    背景 客户凌晨把HIS数据库迁移到配置更高的新服务器,上午业务高峰时应用非常缓慢. 现象 通过SQL专家云实时可视化界面看到大量的绿点,绿点表示会话在等待某项资源,绿点越大说明等待的会话数越多. 进入 ...

  2. forms组件渲染标签、展示信息、校验数据的一些补充,forms组件参数和源码剖析,modelform组件,Django中间

    今日内容 forms组件渲染标签 forms组件渲染标签的方式1 <p>forms组件渲染标签的方式1</p> {{ form_obj.as_p }} {{ form_obj. ...

  3. angular Ionic CLI环境搭建安装以及栅格响应式布局

  4. [Codeforces Round #816 (Div. 2)] D. 2+ doors

    这次Div.2比之前我打的有些要难啊,前三道题就耗了好多时间,D题干脆摆烂了... 还是太逊了 对于一个\(x\),有\(x|y_i=z_i\),那么我们设\(num[x]=z_1\)&\(z ...

  5. SQL优化的一些方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  6. GPIO-CH32x系列芯片GPIO使用注意事项

    一.特殊IO使用注意事项 芯片型号:CH32F203C8T6.CH32V203C8T6 特殊IO:PC13.PC14.PC15 注意事项说明: 1.PC13~PC15的IO功能受限,速度必须限制在2M ...

  7. Vue33 使用nvm管理nodejs

    1 nvm简介 NVM:Node Version Manage,即Node的版本管理工具.使用NVM,可以按照nodejs,可以进行版本切换,可以卸载nodejs等等. 由于项目开发当中,不同的项目可 ...

  8. 《关于我因为flink成为spark源码贡献者这件小事》

    各位读者老爷请放下手上的板砖,我可真没有标题党,且容老弟慢慢道来. spark和flink本身相信我不用做过多的介绍,后端同学不管搞没搞过大数据,应该都多多少少听过. 如果没听过,简单说,spark和 ...

  9. Elasticsearch Mapping类型修改

    背景 通常数据库进行分库分表后,目前比较常规的作法,是通过将数据异构到Elasticsearch来提供分页列表查询服务:在创建Elasticsearch索引时,基本都是会参考目前的业务需求.关系数据库 ...

  10. find_package()的使用

    find_package()命令是用来查找依赖包的,理想情况下,一句find_package()把一整个依赖包的头文件包含路径.库路径.库名字.版本号等情况都获取到,后续只管用就好了.但实际中往往CM ...