【发布时间】:2020-04-23 21:17:47
【问题描述】:
假设我有三个输入和一个按钮,我想在单击按钮时清空输入值。
const [input_value,set_input_value] = useState({
input1:'',
input2:'',
input3:''
})
const inputs_handler = (e) => {
let name= e.target.name;
let value= e.target.value;
input_value[name] = value;
set_input_value(input_value);
}
const clear_input_values = () => {
// First try
/*
set_input_value({
input1:'',
input2:'',
input3:''
})
*/
//SECOND TRY
set_input_value(prevState => ({
...prevState,
input1:'',
input2:'',
input3:''
}))
// console.log shows that the values of state didn't get empty from the first click, but does in
the second
console.log(input_value)
}
<div>
<input onChange={inputs_handler} type='text' name='input1' />
<input onChange={inputs_handler} type='text' name='input2' />
<input onChange={inputs_handler} type='text' name='input3' />
<input onClick={clear_input_values} type='submit' />
</div>
我可以使用document.getElementsById(id)[0].value=''; 来清空输入的值,但我认为这不是在 React 项目中执行此操作的正确方法。
这真的让我很困惑,如果有人提供一个清晰的示例或一个示例的链接来解释状态如何工作以及何时渲染组件,我将不胜感激。因为我相信我在使用set_inputvalues() 方法之前更改了状态值。
【问题讨论】:
-
你需要将input.value绑定到对应的一块状态
-
@AngelSalazar 我确实使用处理程序来获取值,但是如果我像这样设置输入值
<input onChange={inputs_handler} type='text' value={input_values.input1} name='input3' />我将无法更改值
标签: javascript reactjs react-hooks rendering state