我想将状态变量重置为仅针对特定值的初始值
我已经尝试过了:
const initialState={
name:'',
location:'',
....
....
....
}
this.state={
...initialState,
spinner:false,
open:false,
errorMessage:''
}
resetToInitialState = () =>{
this.setState(...initialState);
}
我正在像this.resetToInitialState();
这样的函数中调用此resetToInitialState
<TextField
id="outlined-name"
label="Machine id"
className={classes.textField}
InputProps={{
classes: {
input: classes.text,
},
}}
value={ !name && null } //tried this not working
onChange={e => this.setState({name: e.target.value})}
margin="normal"
variant="outlined"
/>
答案 0 :(得分:2)
您忘记了{}
this.setState({...initialState})
答案 1 :(得分:1)
当您尝试重置状态时,您需要克隆初始状态。如果您传递对initialState
的引用,那么在更改状态时,该引用将发生变异。
this.setState({...initialState});
要创建受控组件,TextField
的值必须为this.state.name
。
<TextField
id="outlined-name"
label="Machine id"
className={classes.textField}
InputProps={{
classes: {
input: classes.text,
},
}}
value={ this.state.name }
onChange={e => this.setState({name: e.target.value})}
margin="normal"
variant="outlined"
/>
编辑:当值是“我的值”时,重置TextField
组件
如果您只想在名称是特定值时重置状态,则需要创建其他onChange
函数并将onChangeReset
设置为{{1 }}组件。
onChange
编辑:添加多个具有重置功能的TextField
组件,以同时重置所有onChangeReset = e => {
if(e.target.value === 'My Value') {
this.resetToInitialState();
else {
this.setState({ name: e.target.value});
}
}
<TextField
onChange={this.onChangeReset}
value={this.state.name}
/>
组件。
TextField