【发布时间】:2021-12-03 22:29:42
【问题描述】:
我有一个对象数组,我在该数组上做了一个映射,现在我想更改特定的对象值。我在map() 函数中使用了onChange 方法。它无法正常工作,请有人帮我解决这个问题。
谢谢
localPreRoutingCall &&
localPreRoutingCall.map((item, index) => (
<>
<div className="pre-route-title">{item && item.field_title}</div>
<textarea
placeholder="Enter something"
className="pre-route-textarea"
value={item && item.value}
onChange={(e) => {
e.persist();
changeObjectValue(e.target.value, item);
}}
/>
<div className="pre-route-description">
{item && item.description}
</div>
</>
))
我正在更新对象值的函数
const changeObjectValue = (value, item) => {
console.log("@@ array", value);
let localArray = localPreRoutingCall;
var index = _.findIndex(localArray, { id: item.id });
localArray.splice(index, 1, { ...item, value: value });
setLocalPreRoutingCall(localArray);
};
【问题讨论】:
-
能否尝试提供
key属性来映射内容容器? -
我试过了,但很抱歉我没能实现我的目标。当我在 textarea 中输入内容时,它只会更新一个字符,因为我输入
Jonas它只是更新了S而不是全名 -
所以你也应该尝试做
{...item, value: oldValue + value} -
实际上,当我输入名称为
Jonas时,它会重新渲染组件 5 次,每次渲染时只返回单个字符
标签: javascript reactjs ecmascript-6 lodash