【发布时间】:2021-01-31 08:43:30
【问题描述】:
所以,问题是每当我按下删除按钮时,它只会删除删除最后一个输入和按钮,而不考虑索引。我试图将密钥更改为key={${index}${name}}`,但这不会很好,因为输入是可变的(在主代码中),这会让事情变得一团糟。
如何根据索引正确删除?
function App() {
const [names, setNames] = React.useState(["First", "Second",'third','fourth']);
const onNameDelete = useCallback((index: number) => {
setNames((prev) => {
const name = names[index];
return prev.filter(x => x != name);
});
}, [names]);
return (
<div>
{names.map((name, index) => (
<Child
key={index}
name={name}
index={index}
onDelete={onNameDelete}
/>
))}
</div>
);
}
interface ChildProps {
name: string;
index: number;
onDelete: (index: number) => void;
}
export const Child: React.FC<ChildProps> = React.memo(
({ name, index, onDelete }) => {
return (
<div>
<input
defaultValue={name}
/>
<button onClick={() => onDelete(index)}>delete</button>
</div>
);
}
【问题讨论】:
标签: javascript reactjs typescript react-native