【发布时间】:2021-09-25 05:32:57
【问题描述】:
我有一个可编辑输入的列表,但是当我过滤掉 useState 数组中的一项时,它仅在我使用不可编辑的 value 属性而不是defaultValue 属性,这会导致数组的最后一项被移除(不是被点击的那一项)。
有没有办法在保持输入可编辑的同时删除右边?
这是一个 Fiddle 示例: https://jsfiddle.net/MatanCL/25hLyj6a/1
还有我的代码:
function App () {
let [myAray1, setMyArray1] = React.useState(['cat', 'dog', 'fish']);
let [myAray2, setMyArray2] = React.useState(['cat', 'dog', 'fish']);
return (
<div>
Working, but input is uneditable:
{myAray1.map(animal => <div>
<input value={animal}/>
<button onClick={() => {
const me = animal;
setMyArray1(myAray = myAray1.filter(animal => animal !== me));
}}>
remove
</button>
</div>)}
<br/>
Removes the wrong one:
{myAray2.map(animal => <div>
<input defaultValue={animal}/>
<button onClick={() => {
const me = animal;
setMyArray2(myAray2 = myAray2.filter(animal => animal !== me));
}}>
remove
</button>
</div>)}
</div>
)
}
谢谢大家!
【问题讨论】:
标签: arrays reactjs state jsx use-state