5. react 基础 - 组件拆分 和 组件传值
1.将 todoList 进行拆分
创建 编写TodoList.js
import React, {Component, Fragment} from 'react';
import TodoItem from './TodoItem';
class TodoList extends Component {
constructor(props) {
super(props);
this.state = {inputValue: '', list: []}
this.inputChange = this.inputChange.bind(this);
this.itemDelete = this.itemDelete.bind(this);
this.addClick = this.addClick.bind(this);
}
render() {
return (
<Fragment>
<input type='text' value={this.state.inputValue} onChange={this.inputChange}/>
<button onClick={this.addClick}>提交</button>
<ul>
{/*获取 子项*/}
{this.getItem()}
</ul>
</Fragment>
);
}
getItem() {
return this.state.list.map((value, index) => {
/*key 属性 应该加在 最外层 元素上*/
return (
<TodoItem key={index} value={value} index={index} itemDelete={this.itemDelete}/>
);
})
}
inputChange(e) {
const value = e.target.value;
// 异步 的 setState
this.setState(() => ({
inputValue: value
}));
}
addClick() {
const value = this.state.inputValue;
if (!value) return;
// prevState 表示 改变 state 之前的 state 值
this.setState((prevState) => ({
list: [...prevState.list, prevState.inputValue],
inputValue: ''
}))
}
itemDelete(index) {
this.setState((prevState) => {
const list = [...prevState.list];
list.splice(index, 1);
// 形如 return {list:list}
return {list};
})
}
}
export default TodoList;
创建 编写TodoItem.js
#TodoItem.js
import React , { Component } from 'react';
class TodoItem extends Component{
constructor(props){
super(props);
this.delete = this.delete.bind(this);
}
render() {
const {value} = this.props;
return (
<div onClick={this.delete}>{value}</div>
);
}
delete(){
const {itemDelete , index} = this.props;
itemDelete(index);
}
}
export default TodoItem;
5. react 基础 - 组件拆分 和 组件传值的更多相关文章
- 从性能角度看react组件拆分的重要性
React是一个UI层面的库,它采用虚拟DOM技术减少Javascript与真正DOM的交互,提升了前端性能:采用单向数据流机制,父组件通过props将数据传递给子组件,这样让数据流向一目了然.一旦组 ...
- react基础用法二(组件渲染)
react基础用法二(组件渲染) 如图所示组件可以是函数 格式:function 方法名(){ return <标签>内容</标签>} 渲染格式: <方法名 /> ...
- React组件之间通过Props传值的技巧(小案例,帮助体会理解props、state、受控组件和非受控组件等)
本文重要是根据react小书上的一个很简单的例子改编的,加上自己的学习理解,希望可以通过实际案例让大家对概念有更清晰的理解,当然也希望能一块学习. import React,{Component} f ...
- react学习-react父组件给子组件传值与设置传值类型以及是否必传参数
react 父组件给子组件传参时,父组件直接在引入的子组件内写入要传递的参数即可 <HeaderComponent title={"传递的参数"}></Heade ...
- 九、React中的组件、父子组件、React props父组件给子组件传值、子组件给父组件传值、父组件中通过refs获取子组件属性和方法
一.概述 React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. [父子组件]:组件的相互调用中,我们把调用者称为父 ...
- 15. react UI组件和容器组件的拆分 及 无状态组件
1.组件的拆分 组件拆分的前提 当所有的逻辑都出现在一个组件内时 组件会变得非常复杂 不便与代码的维护 所以对组件进行拆分 IU组件 进行页面渲染 容器组件 进行逻辑操作 UI组件的拆分 新建一个 ...
- react子组件向父组件传值
子组件向父组件传值,注意父组件传递函数的时候必须绑定this到当前父组件(handleEmail={this.handleEmail.bind(this)}),不然会报错 /***实现在输入框输入邮箱 ...
- [react 基础篇]——React.createClass()方法同时创建多个组件类
react 组件 React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件.React.createClass 方法就用于生成一个组件类 一个组 ...
- React篇-子组件调用父组件方法,并传值
react 中子组件调用父组件的方法,通过props: 父组件: isNote(data){} <div className="tabC01"> <FTab ta ...
随机推荐
- POJ 1655:Balancing Act
Balancing Act Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10311 Accepted: 4261 De ...
- 活动目录对象属性批量修改工具------ADModify
最近下载了一个可以修改活动目录用户.组.联系人等活动目录对象属性的工具,试用了一下,发现还是蛮好用的,并且还可以修改对象的扩展属性,如:在活动目录中安装了Exchange 2003,Exchange ...
- Flutter如何引用第三方库并使用
Flutter如何引用第三方库并使用 https://www.jianshu.com/p/bbda7794345e Flutter官网点击访问Flutter教程(一)Flutter概览Flutter教 ...
- eclipse 项目启动不了问题
有可能是因为dubugger 打多了,所有启动不起来 解决方案:window——show view ——other....——breakpoints去除所有断点
- java基础源码 (2)--StringBuilder类
Serializable(接口): 是一个IO的序列化接口,实现了这个接口,就代表这个类可以序列化或者反序列化,该接口没有方法或者字段,仅用于标识可串行话的语义. Appendable(接口): /* ...
- android 开发学习3
DAO:DATA ACCESS OBJECT getApplication()和MainActivity.this 是两种不同的context,也是最常见的两种.第一种中context的生命周期与Ap ...
- Java基础之内省
Java基础之内省 什么是内省 首先,我们要知道什么是内省.按我自己的理解就是在反射的原理上进行封装,来更方便的操作JavaBean JavaBean就是特殊格式的类,其规范为: JavaBean ...
- phi
给定 \(T\) 个正整数 \(n\) ,对于每个 \(n\) ,输出做小的 \(m\) ,使得 \(\phi (m)\ge n\). 思路1:搞个线性欧拉函数筛,后缀最大值,二分查找 思路2:直接求 ...
- C++ createprocess 打开word
#define FileName _TEXT("E:\\DuplicateHandle伪句柄与实句柄的应用.docx") void CMFCApplication1Dlg::OnB ...
- Tomcat9卸载与安装
Tomcat9卸载与安装 首先确定环境变量配置正确,按实际的安装路径来设置. 在tomcat9的bin目录下打开命令行窗口 按住shift键不放,点击右键 输入以下命令 在打开的命令行窗口中输入以下命 ...