入れ子になっている値を更新しようとしています。私はnestedIndex
をupdate-したい項目のindex
に位置している [{ name: "hello", id:20, genre: [{ name: 'test', id: 2 }, { name: 'foo', id: 200 }] }, { name: "hi", id:12, genre: [] }]
setState(ネストされていない)のネストされたアイテム
に [{ name: "hello", id:20, genre: [{ name: 'baz', id: 2 }, { name: 'foo', id: 200 }] }, { name: "hi", id:12, genre: [] }]
:
結果から行く必要があります。ただし、ID
を使用して一致させることもできます(index
が良い考えではない場合)。
私はここでそれを試みた:
return item.name === x.name ? { ...item, name: e.target.value, genre[nestedIndex].name: 'test' } : item
をどのようにSETSTATEでネストされたアイテムを更新しますか?
state = {
search: "",
items: [{ name: "hello", id:20, genre: [{ name: 'baz', id: 2 }, { name: 'foo', id: 200 }] }, { name: "hi", id:12, genre: [] }]
};
onChange(e, x) {
const { items } = this.state
const index = items.findIndex(itm => itm.name === x.name)
const nestedIndex = [items[index]].map(e => e.genre).pop().findIndex(itm => itm.id === 2)
this.setState({
items: items.map(item => {
return item.name === x.name ? { ...item, name: e.target.value } : item
})
});
}
render() {
const { items } = this.state;
return (
<div>
{items.map((x) => {
return (
<div>
{" "}
{x.name}
{x.genre.map((itm) => {
return <i> {itm.name}</i>;
})}
<input onChange={e => this.onChange(e, x)} type="text" />
</div>
);
})}
</div>
);
}
}
あなたの質問は何ですか? –
setStateの入れ子項目を更新するにはどうすればよいですか?私の質問です。 Thx – Ycon