【发布时间】:2020-09-29 12:49:29
【问题描述】:
我需要在单击按钮时动态添加新的输入字段,并在数组中获取这些输入的用户输入。这就是我所拥有的,我不知道如何做阵列。同样在屏幕上,组件仅在我更改状态时才会更新。不是点击按钮。 这就是我所拥有的:
import React, { useState } from 'react'
const CreatePoll = () => {
const [formData, setFormData] = useState({
question: '',
options: ['hi', 'there']
});
const {
question,
options
} = formData;
const addOption = e => {
e.preventDefault();
options.push([''])
console.log(options.length);
}
const handleQuestionChange = (e) => setFormData({
...formData,
[e.target.name]: e.target.value
})
const handleOptionChange = e => setFormData({
...formData
// options: []
})
const handleSubmit = async e => {
e.preventDefault();
console.log(formData)
}
return (
<form onSubmit={handleSubmit}>
<input
placeholder="enter your question"
type="text"
onChange={handleQuestionChange}
name="question" />
{options.map(() => {
return (
<input
placeholder="option"
type="text"
onChange={handleOptionChange}
name="option" />
)
})}
<input type="button" value="Add new option" onClick={addOption} />
<input type="submit" value="Submit" />
</form>
)
}
export default CreatePoll
我尝试在单击 addOption 按钮时向选项状态添加一个空字符串。数组的长度会更新,但屏幕上的组件不会直到我在输入框中键入并且状态发生变化。我还需要将输入框的值映射到它们在数组中的相应位置。他们还应该能够随时进行编辑。这是怎么做到的?
【问题讨论】:
-
this 给你提示了吗?
标签: javascript arrays reactjs forms react-hooks