这里通过todolist的功能来说明

父组件:

import React,{ Component,Fragment } from 'react';
import TodoItem from './ToDoItem'; class TodoList extends Component { constructor(props) {
super(props);
this.state = {
inputValue: '',
todoList: []
};
this.handleSubmit = this.handleSubmit.bind(this);
this.handleChangeInput = this.handleChangeInput.bind(this);
this.handleDelete = this.handleDelete.bind(this);
this.parentMethod = this.parentMethod.bind(this);
this.testChildren = this.testChildren.bind(this);
} render() {
const { inputValue,todoList } = this.state;
return (
<Fragment>
<p><input value={inputValue} onChange={this.handleChangeInput} /><button onClick={this.handleSubmit} type="button">提交</button></p>
<TodoItem ref="children" parentMethod = {this.parentMethod} />
<button onClick={this.testChildren}>测试调用子组件的方法</button>
<ul>
{
todoList.map((item,index) => (
<li
key={+new Date() + index}
dangerouslySetInnerHTML={{__html:item}}
onClick={() => this.handleDelete(index)}></li>
))
}
</ul>
</Fragment>
)
}; parentMethod() {
alert("调动父组件方法");
} testChildren() {
this.refs.children.childrenMethod();
} handleChangeInput(e) {
this.setState({
inputValue: e.target.value
},() => {
console.log(this.state);
})
} handleSubmit() {
this.setState({
todoList: [...this.state.todoList,this.state.inputValue],
inputValue: '',
})
} handleDelete(index) {
// immutable概念
// state不允许我们做任何的改变
let list = [...this.state.todoList]; //拷贝一份TodoList
list.splice(index,1); this.setState({
todoList: list
})
} } export default TodoList;

子组件

import React,{ Component } from 'react';

class TodoItem extends Component {
constructor(props) {
super(props);
this.childrenMethod = this.childrenMethod.bind(this);
} render() {
return (
<div>
<h3>子组件</h3>
<button onClick={this.childrenMethod}>子组件方法</button>
<button onClick={this.props.parentMethod}>父组件方法</button>
</div>
)
} childrenMethod() {
alert("调用子组件方法");
} } export default TodoItem;

总结:

父组件给子组件传递数据:直接在调用子组件的地方传递数据即可。

调用子组件的方法:简单说就是给子组件,通过ref起个名字,然后在父组件的点击事件中,通过this.refs.子组件的名字.子组件的方法来实现

子组件调用父组件的方法。在调用子组件的地方将方法传递,子组件中通过this.props。父组件传递的方法即可

子组件给父组件传递数据:通过调用父组件的方法时,通过callback回调传递数据。this.props.父组件的方法(传递的数据)

react.js父子组件通信的更多相关文章

  1. 关于React的父子组件通信等等

    //==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...

  2. vue.js父子组件通信动态绑定

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. react.js 父子组件数据绑定实时通讯

    import React,{Component} from 'react' import ReactDOM from 'react-dom' class ChildCounter extends Co ...

  4. 三大前端框架(react、vue、angular2+)父子组件通信总结

    公司业务需要,react.vue.angular都有接触[\无奈脸].虽然说可以拓展知识广度,但是在深度上很让人头疼.最近没事的时候回忆各框架父子组件通信,发现很模糊,于是乎稍微做了一下功课,记录于此 ...

  5. react第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参)

    第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参) #课程目标 1.梳理react组件之间的关系 2.掌握父子传值的方法 3.掌握子父传值的方法 ...

  6. 【Vue课堂】Vue.js 父子组件之间通信的十种方式

    这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...

  7. React中父子组件间的通信问题

    1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)

  8. React之父子组件之间传值

    1.新增知识点 /** React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. 父子组件:组件的相互调用中,我们把调 ...

  9. Vue 非父子组件通信

    组件是Vue核心的一块内容,组件之间的通信也是很基本的开发需求.组件通信又包括父组件向子组件传数据,子组件向父组件传数据,非父子组件间的通信.前两种通信Vue的文档都说的很清楚,但是第三种文档上确只有 ...

随机推荐

  1. 史诗级最强教科书式“NIO与Netty编程”

    史诗级最强教科书式“NIO与Netty编程” 1.1 概述 1.2 文件IO 1.2.1 概述和核心API 1.2.2 案例 1.3 网络IO 1.3.1 概述和核心API 3.4 AIO编程 3.5 ...

  2. Servlet、Jsp

    一.Servlet 1.什么是Servlet? (1)由sun公司(被oracle公司收购)制定的一种用来扩展web服务器功能的组件规范.简单的讲就是一种用来开发动态Web的技术. 扩展web服务器功 ...

  3. css知识笔记:水平居中(别只看,请实操!!!)

    css实现元素的水平居中. (尝试采用5W2H方法说明): 别只看,请实操!!! What: 1.这篇文档主要描述元素水平方向居中的几种最常见和最实用的几种方式,并说明优缺点. 2.写这篇文章的目的, ...

  4. eclipse git 主干代码合并到分支

    https://blog.csdn.net/wwd0501/article/details/80676807 eclipse git 主干代码合并到分支: 1.项目切换至分支: 2.选中项目右键--& ...

  5. Azure 架构师认证考试

    Azure认证路线 AZ-300 AZ-301 https://blog.csdn.net/pg_edb/article/details/86794505 免费题 https://iteablue.c ...

  6. 003 C/C++ 数据类型_数组

    #include "stdio.h" #include "stdlib.h" //数据类型的本质: 固定大小内存块的别名. void main() { int ...

  7. 函数计算自动化运维实战 2 -- 事件触发 eip 自动转移

    函数计算 阿里云函数计算是一个事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.函数计算会为您准备好计算资源,以弹性.可靠的方式运行您的代码,并提供日志查询,性能 ...

  8. MVC(基础二)

    原文链接:https://blog.csdn.net/wuzxc520/article/details/77880783 1.网站开发介绍 2.响应流程 3.MVC 介绍 4.文件夹含义

  9. AcWing 836. 合并集合

    地址  https://www.acwing.com/problem/content/838/ 一共有n个数,编号是1~n,最开始每个数各自在一个集合中. 现在要进行m个操作,操作共有两种: “M a ...

  10. LG1840 Color the Axis 线段树

    菜的人就要写简单题 为了练习手速来写这样一道 珂朵莉树 线段树简单题 没啥可说的,注意修改操作中要判一下 val=0 #include<bits/stdc++.h> using names ...