【发布时间】:2021-11-27 10:36:08
【问题描述】:
我在 useState 挂钩中有一个对象数组,我用它来渲染输入元素。 输入元素更改时状态不会更新。
这是我的代码。
ProceduralResponseAnswerCreate Component
const ProceduralResponseAnswerCreate = () => {
const [proceduralAnswers, setProceduralAnswers] = useState([{ "value": "One" }, { "value": "two" }])
return <>
<ol>
{proceduralAnswers.map((answer, answer_index) => <input key={answer_index} style={inputStyle} onChange={(event) => updateAnswerValue({ event, setProceduralAnswers, answer_index })} value={answer.value} />)}
</ol>
</>
}
export default ProceduralResponseAnswerCreate
updateAnswerValue函数
export const updateAnswerValue = ({ event, setProceduralAnswers, answer_index }) => {
setProceduralAnswers(state => {
var newState = state;
var currentAnswer = newState.filter((state_1, index) => index === answer_index)[0]
currentAnswer.value = event.target.value
return newState
})
}
【问题讨论】:
-
尝试将 updateAnswerValue 函数移动到您的组件中,您不需要导入它并将 setState 函数作为道具发送给它,或者在您的组件中创建一个使用 setProceduralAnswers 状态设置器的不同函数, 并将其作为回调函数 prop 传递。
-
我创建了这个示例,希望对您有所帮助 - codesandbox.io/s/affectionate-silence-rbbkm?file=/src/…