arrays - 反应中的重置数组不会进入原始状态
问题描述
将元素插入数组后,当我重置时,它不会转到[1,2,3,4,5]的initialStateOfList。
例如,如果我插入 6 和 7,然后按清除然后重置按钮,它会转到 [1,2,3,4,5,6,7] 而不是 [1,2,3,4,5] .
我应该怎么做才能让它回到原来的状态?
import React , {Component} from 'react';
import {render} from 'react-dom';
const initialStateOfList = [1,2,3,4,5];
class Form extends Component{
state = {
tempo : '',
list : initialStateOfList
};
clearArray=()=>{
this.setState({list:[]});
}
resetArray=()=>{
this.setState({list:initialStateOfList});
}
tempAdd=(event)=>{
this.setState({tempo:event.target.value});
}
addItem=(event)=>{
event.preventDefault();
this.state.list.push(this.state.tempo);
this.setState({tempo:''});
}
render(){
const listitem = this.state.list.map((number) => <li>{number}</li>);
return(
<div>
<form ref="form" id="getInput" onSubmit={this.addItem}>
{this.state.list.map((listItem)=><li>{listItem}</li>)}
<input type="text" ref="formText" id="adder" onBlur={this.tempAdd} />
<input type="submit" ref="formSubmit" id="passer" />
<button id="clear" onClick={this.clearArray}>clear</button>
<button id="reset" onClick={this.resetArray}>reset</button>
</form>
</div>
);
};
}
export default Form;
解决方案
我认为您在这里对 const 关键字感到困惑。由于 javascript 中的数组是引用,因此您正在改变状态。
当您使用数组声明 const initialStateOfList 时,您将能够自由地向该变量添加变量。这里的“const”意味着一旦声明你就不能重新分配那个变量。但是在数组内部,元素是可以改变的。
例如
const arr1 = [1,2,3];
arr1.push(4); // Possible. No Error
arr1 = [1,2,3,4]; // Not possible.
因此,每次您必须创建新数组并且不要改变原始数组引用。
推荐阅读
- json - 如何修复 json 模型转换?[已解决]
- python-3.x - 如何使用 python 解析 .blend 文件或 SDNA 结构文件?
- android - 使用电话和电子邮件注册 Firebase,然后在首次登录时设置密码
- python - 在 python 数据框中创建新的向量
- xml - 从 dita 文件中的表生成 PNG
- tfs - 在另一个 TFS 查询中调用 TFS 查询
- python - 从给定句子生成一个新句子而不改变给定句子的含义
- ios - 何时在 Xcode 上链接框架/库?
- manim - 如何将浮点数传递给 x_axis
- php - 如何根据她的 slug 获得模型名称?