私はオブジェクトの配列を持っており、マップを使用して表示しています。各ユーザーには、それぞれのオプションに「編集」と「削除」オプションボタンがあります問題は、あなたが見ることができます私は状態を設定するボタンをクリックしたときに、ある方法ですHere自己データのみの状態をreactjsのマップに設定する
:コードはitselft
class App extends React.Component {
state = {
edit: false,
remove: false
}
handleEdit =() => {
this.setState({ edit: true })
}
handleRemove =() => {
this.setState({ remove: true })
}
cancelEdit =() => {
this.setState({ edit: false })
}
cancelRemove =() => {
this.setState({ remove: false })
}
renderEditItem =() => {
const {
state: {
edit,
remove
},
cancelEdit,
cancelRemove,
handleEdit,
handleRemove
} = this
if (edit) {
return (
<div>
<span>Edit view</span>
<br/>
<button onClick={cancelEdit}>Cancel</button>
</div>
)
}
if (remove) {
return (
<div>
<span>Remove view</span>
<br/>
<button onClick={cancelRemove}>Cancel</button>
</div>
)
}
return (
<div>
<button onClick={handleEdit}>Edit</button>
<br/>
<button onClick={handleRemove}>Remove</button>
</div>
)
}
renderUsers =() => {
const {
renderEditItem
} = this
const users = [
{
id: 1,
name: 'User1'
},
{
id: 2,
name: 'User-2'
},
{
id: 3,
name: 'User-3'
}
]
return users.map((user) => {
return (
<ul key={user.id}>
<li>
<div>
<span ref='span'>{user.name}</span>
<br/>
{renderEditItem()}
</div>
</li>
</ul>
)
})
}
render() {
return (
<div>
{this.renderUsers()}
</div>
)
}
}
React.render(
<App />,
document.getElementById('app')
);
JSfiddleを説明するように、別のビューを表示するように状態を設定onlclick機能編集または削除オプションを選択すると、これはすべてのアイテムの表示を に表示し、クリックされたビューのみにする必要があります。私は状態を知っていますgeをtrueにして、すべてのアイテムについて同じですが、どのエントリーに対してどのように状態を設定するのかわかりません。
ありがとうございます。
おかげで、私はこれをせずにオブジェクトに何かを追加行うための別の方法があることに気づいた、とある:
は、その後、あなたはこのような何かをレンダリングすることができますこのようにマップ関数は、onClick fncだけで、コンポーネントスコープに状態をトリガします。 –