gpt4 book ai didi

javascript - 为什么 React 中的受控输入组件不会随状态更新?

转载 作者:行者123 更新时间:2023-12-03 13:56:38 24 4
gpt4 key购买 nike

我在我所在州的“editIngreds”数组中有一份成分列表,例如[“苹果”、“香蕉”、“橙子”]。它们通过 React Map 函数渲染到 DOM。我有一个编辑模式,可以用输入框替换文本,这样我就可以编辑项目并将它们保存回状态数组。然而,当在框中输入时,什么也没有发生。 console.log 显示,当我键入字符时,editIngreds[i] 确实正在更新,但是输入框不会使用此新值进行更新。

 export default function RecipeCard({ recipe, onEditRecipe, onRemoveRecipe }) {
const ingredients = Object.values(recipe.ingredients);
const ingredientKeys = Object.keys(recipe.ingredients);

const [editIngreds, setEditIngreds] = React.useState(ingredients)

...

const onChangeEditIngreds = (event, i) => {
const value = event.target.value;
const ingreds = editIngreds
ingreds[i] = value;
setEditIngreds(ingreds);
};

...

return (
<ul>
{ingredients.map((ingred, i) => (
<li key={ingredientKeys[i]}>
{editMode ? (
<Input
type="text"
value={editIngreds[i]}
onChange={(e) => onChangeEditIngreds(e,i)}
/>
) : (
<>{ingred}</>
)}
</li>
))}
</ul>

最佳答案

您正在改变状态。在更新之前制作ingredients的浅拷贝

const onChangeEditIngreds = (event, i) => {
const value = event.target.value;
const ingreds = [...editIngreds];
ingreds[i] = value;
setEditIngreds(ingreds);
};

关于javascript - 为什么 React 中的受控输入组件不会随状态更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58856868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com