/**
*
* 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. PKUSC2022 润摆寄

    Day 0 模拟赛的题目竟是 寄 摆 润!预示着我的 PKUSC. Day 1 猜中主角(指九条可怜)原来都是芳文厨 看错时间以为考 \(5h\),于是告诉自己 优势在我可以慢慢做. T1 很显然的 ...

  2. Flutter异常监控 - 叁 | 从bugsnag源码学习如何追溯异常产生路径

    如果觉得文章对你有帮助,点赞.收藏.关注.评论,一键四连支持,你的支持就是我创作最大的动力. ️ 本文原创听蝉 公众号:码里特别有禅 欢迎关注原创技术文章第一时间推送  ️ 前言 没错,继Flutte ...

  3. 【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据

    SpringBoot快速操作Redis数据 在SpringBoot框架中提供了spring-boot-starter-data-redis的依赖组件进行操作Redis服务,当引入了该组件之后,只需要配 ...

  4. js 禁用刷新快捷键

    // 上代码 /** * 按键监听 * Ctrl-17,F5-116,R-82 */ var oldKeyCode = -1; document.onkeydown = function (e) { ...

  5. 小白从零到AIoT之路(前言)

    什么是AIoT 简单来说就是AI(人工智能)+IoT(物联网)= AIoT(人工智能物联网). AIoT融合AI技术和IoT技术,通过物联网产生.收集来自不同维度的.海量的数据存储于云端.边缘端,再通 ...

  6. 【分析笔记】展讯 RDA8810PL 平台 Camera 驱动分析和移植(Android 4.4 )

    前言概述 因以下原因,导致不得不通过代码分析来学习如何在该平台下进行摄像头驱动移植 香橙派开发商(迅龙软件)仅提供能跑起来的源代码.固件,以及简单的编译文档,不提供其它技术支持 baidu.googl ...

  7. 命令行部署KingbaseES流复制+切换测试

    建立系统数据库安装用户组及用户,在所有的节点执行 root用户登陆服务器,创建用户组及用户并且设置密码 groupadd -g 2000 kingbase useradd -G kingbase -g ...

  8. spring cloud alibaba - Nacos 下载安装

    1.关于名字 前四个字母分别为Naming和Configuration的前两个字母,最后的s为Service 2.是什么 一个更易于构建云原生应用的动态服务发现,配置管理和服务管理中心.是注册中心和配 ...

  9. XYplorer使用教程

    XYplorer使用教程 XYplorer是Windows的文件管理器.它具有标签式浏览,强大的文件搜索功能,多功能预览,高度可定制的界面,可选的双窗格以及一系列独特的方法,可以有效地自动执行频繁重复 ...

  10. C# 编写Windows Service Windows服务程序

    一.新建项目--选择Windows 服务,输入新的项目名称,点击确定. 二.服务名称的设置.服务添加安装程序.服务程序代码 1.服务名称的设置:视图 - 解决方案资源管理器 - 你创建的服务项目 默认 ...