react.js父子组件通信
这里通过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父子组件通信的更多相关文章
- 关于React的父子组件通信等等
//==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...
- vue.js父子组件通信动态绑定
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- react.js 父子组件数据绑定实时通讯
import React,{Component} from 'react' import ReactDOM from 'react-dom' class ChildCounter extends Co ...
- 三大前端框架(react、vue、angular2+)父子组件通信总结
公司业务需要,react.vue.angular都有接触[\无奈脸].虽然说可以拓展知识广度,但是在深度上很让人头疼.最近没事的时候回忆各框架父子组件通信,发现很模糊,于是乎稍微做了一下功课,记录于此 ...
- react第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参)
第六单元(react组件通信-父子组件通信-子父组件通信-跨级组件的传参方式-context方式的传参) #课程目标 1.梳理react组件之间的关系 2.掌握父子传值的方法 3.掌握子父传值的方法 ...
- 【Vue课堂】Vue.js 父子组件之间通信的十种方式
这篇文章介绍了Vue.js 父子组件之间通信的十种方式,不管是初学者还是已经在用 Vue 的开发者都会有所收获.无可否认,现在无论大厂还是小厂都已经用上了 Vue.js 框架,简单易上手不说,教程详尽 ...
- React中父子组件间的通信问题
1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)
- React之父子组件之间传值
1.新增知识点 /** React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. 父子组件:组件的相互调用中,我们把调 ...
- Vue 非父子组件通信
组件是Vue核心的一块内容,组件之间的通信也是很基本的开发需求.组件通信又包括父组件向子组件传数据,子组件向父组件传数据,非父子组件间的通信.前两种通信Vue的文档都说的很清楚,但是第三种文档上确只有 ...
随机推荐
- Python复习 一
Python回炉复习 1 变量 Python的变量和C语言的变量书写方式类似: 书写要求 python程序编写结构利用缩进表示,抛弃花括号: 结构 分支: if(条件语句1): 执行语句块 else ...
- ABP入门教程4 - 初始化运行
点这里进入ABP入门教程目录 编译解决方案 重新生成解决方案,确保生成成功. 连接数据库 打开JD.CRS.Web.Host / appsettings.json,修改数据库连接设置Connectio ...
- 解决Mac下java多版本共存问题
一.系统环境 macOS High Sierra(版本:10.13.6) MacBook Air (13-inch, Early 2015) 二.解决步骤 1. 新建.bash_profile文件 $ ...
- 30-学容器必须懂 bridge 网络
Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果不指定--network,创建的容器默认都会挂到 docker0 上. apt-get install bri ...
- volatile简记
volatile指出变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错,也就是在使用变量时必须从它的地址中重新读取.
- 小程序-API请求
Page({ onLoad:function(){ // 在onLoad中调用发送请求的函数 this.getProList(); } getProList:function(){ var self= ...
- 网络传播模型Python代码实现
SI模型 import numpy as np import matplotlib.pyplot as plt import smallworld as sw #邻接矩阵 a = sw.a # 感染率 ...
- vscode源码分析【三】程序的启动逻辑,性能问题的追踪
第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 启动追踪 代码文件:src\main.js 如果指定了特定的启动参 ...
- golang之引用自己定义的包
初始目录如下: 其中main.go只有一个主函数main(),用于运行程序,array文件夹是自己定义的包,里面spArr.go位于package array. spArr中的函数名或变量首字母得大写 ...
- Yii2处理密码加密及验证
在Yii2中提供了密码加密以及验证的一系列方法,方便我们的使用,它使用的是bcrypt算法.查看源码我们可以发现它使用的是PHP函数password_hash()和crypt()生成. 加密: /** ...