react列表中,当key改变后发生的事情
Main.jsx
export default class Main extends PureComponent {
constructor(props) {
super(props);
this.state = {
list: [
{
key: ,
value:
},
{
key: ,
value:
},
{
key: ,
value:
}
]
}
this.setKey = ::this.setKey;
}
componentWillMount() {
console.log('main will mount');
}
componentDidMount() {
console.log('main did mount');
}
componentWillUpdate() {
console.log('main will update');
}
componentDidUpdate() {
console.log('main did update');
}
componentWillUnmount() {
console.log('main will unmount');
}
setKey() {
const { list } = this.state;
this.setState({
list: Array.from(list, item => {
return Object.assign(item, {
key: item.key +
});
})
});
}
render() {
const { list } = this.state;
return (
<div>
{list.map(item => <List key={item.key} value={item.value} />)}
<button onClick={this.setKey}>key</button>
</div>
)
}
}
List.jsx
export default class List extends PureComponent {
constructor(props) {
super(props);
}
componentWillMount() {
console.log(`list${this.props.value} will mount`);
}
componentDidMount() {
console.log(`list${this.props.value} did mount`);
}
componentWillUpdate() {
console.log(`list${this.props.value} will update`);
}
componentDidUpdate() {
console.log(`list${this.props.value} did update`);
}
componentWillUnmount() {
console.log(`list${this.props.value} will unmount`);
}
render() {
const { value } = this.props;
return(
<div>
list{value}
</div>
)
}
}
当点击key按钮后会发生什么呢?先分析一下

react列表中,当key改变后发生的事情的更多相关文章
- React组件中的key
React组件中的key 一.key的作用 react中的key属性,它是一个特殊的属性,它是出现不是给开发者用的(例如你为一个组件设置key之后不能获取组件的这个key props),而是给reac ...
- react项目中引入了redux后js控制路由跳转方案
如果你的项目中并没有用到redux,那本文你可以忽略 问题引入 纯粹的单页面react应用中,通过this.props.history.push('/list')就可以进行路由跳转,但是加上了redu ...
- 列表中相同key的字典相加
# 怎么把列表中相同key的字典相加,也就是id的值加id的值,doc_count的值加doc_count的值 # 目标列表 l=[{'id': 5, 'doc_count': 129}, {'id' ...
- .Net中使用com组件后发生System.ArithmeticException异常的解决办法(Message=算术运算中发生溢出或下溢。)
最近在开发一个.Net程序,其中涉及到对com组件的调用,或者第三方DLL调用, 在调用完以后如果使用一些小的测试程序继续运行,一切正常,但是在使用带有GUI的form程序,或者WPF程序中,继续执行 ...
- 使用Jquery解决Asp.Net中下拉列表值改变后访问服务器刷新界面。
使用DropDownList控件时,改变选项时,获取服务端数据库数据并刷新界面数据. 1. 绑定DropDownList控件SelectedIndexChanged事件. 2. AutoPortBac ...
- 浏览器输入url后发生的事情以及每步可以做的优化
首先总结下输入url按下回车后的大致流程: 查询url的ip地址. 建立tcp连接,连接服务器. 浏览器发起http/https请求. 服务器响应浏览器的请求. 网页的解析与渲染. 下面分析每个过程 ...
- React之事件绑定、列表中key的使用
在学习React的Hadding Events这一章节,发现事件回调函数的几种写法,看似区别不大,但实际差异还是蛮大的. class Toggle extends React.Component{ c ...
- 写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么
怼一波,在项目中有很多经常用到,但又含糊不清的知识点 框架中的key: 1. 为啥在遍历元素时要用 key :在开发过程中为了保证遍历同级元素的唯一性,用来提高更新 dom 的性能: 2. 凭啥要保证 ...
- React 点击删除列表中对应项(React 获取DOM中自定义属性)
点击删除按钮,删除列表中对应项本来是React比较基础的应用,可是应用情况变得复杂了以后,我还真想了一会儿才搞定. 简化一下应用场景:点击新增按钮,增加一条输入框,点击输入框旁边的按钮,删除该输入框( ...
随机推荐
- Kubectl工具常用命令
创建namesapce kubectl create namespace {name} 注意:name只能为小写字母.数字和-的组合,且开头结尾为字母,一般格式为my-name 123-abc等. 创 ...
- Springboot中jar 重复冲突 导致 静态资源加载问题!
这个jar 其实在common 中也是存在的 ,当时没注意看,就导入进来了,然后 css js 等一些静态资源全部不能加载!具体原因我没去深挖!后面找个时间深挖下,先填坑!
- coursera 《现代操作系统》 -- 第七周 存储模型(1)
虚拟地址 隔离进程,便于管理. 问:为什么不直接划分物理地址为一块一块,直接管理,而要做一层虚拟地址的映射呢? 栈和堆 Differences between Stack and Heap Stack ...
- docker postgres
启动一个 Postgres 实例 docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d daocloud.i ...
- diff工具
Beyond Compare 4 可以diff文件夹.单个文件.
- Python3.6全栈开发实例[023]
23.税务部门征收所得税. 规定如下: (1)收入在2000以下的. 免征. (2)收入在2000-4000的, 超过2000部分要征收3%的税. (3)收入在4000-6000的, 超过4000部分 ...
- (转)js原生自定义事件的触发dispatchEvent
1. 对于标准浏览器,其提供了可供元素触发的方法:element.dispatchEvent(). 不过,在使用该方法之前,我们还需要做其他两件事,及创建和初始化.因此,总结说来就是: 1 2 3 d ...
- Python中使用MySQL
@1: 安装MySQL: lxw ~$ sudo apt-get install mysql-server 可以通过 sudo netstat -tap | grep mysql` 命令检查之后,如果 ...
- (转) GIS 中地理坐标和屏幕坐标的标准转换方法
from :http://www.cnblogs.com/WonKerr/archive/2010/01/01/Coord_Transform.html 在GIS中,当你拿到一个图层的地理坐标后,如果 ...
- UI控件之UIPickerView的协议方法
UIPickerView:选择视图,父类是UIView UIPickerView *pickerView=[[UIPickerView alloc]initWithFrame:CGRectMake(1 ...