コンポーネントからコメントを削除する場合は、親state
を更新する必要があります。
これを行うには、新しいメソッドdelete(id)
をParent
コンポーネントに作成し、削除したアイテムを状態から削除します。
const Parent = React.createClass({
getInitialState:function(){
return {
items: []
};
},
componentWillMount:function(){
this.setState({
items: [
{id: 1,name: "Name 1"},
{id: 2,name: "Name 2"},
{id: 3,name: "Name 3"}
]
})
},
delete(id){
// axios.post(...)
let items = this.state.items.filter(item => item.id !== id);
this.setState({items});
},
render() {
return (
<div>
<Child1
data={this.state.items}
handleClick={this.delete} // Pass the method here
/>
</div>
);
}
});
function Child1(props){
return(
<div>
{ props.data.map((comment,id) =>(
<p key={id}>
{comment.name}
<Delete
data={comment.id}
handleClick={() => props.handleClick(comment.id)} // Pass the id here
/>
</p>
)
)}
</div>
)
}
class Delete extends React.Component {
constructor(props) {
super(props);
}
render() {
return <button onClick={this.props.handleClick}>Delete</button>;
}
}
jsfiddle
出典
2016-10-17 12:55:28
QoP
項目が削除されたときは、 'Child'コンポーネントが実行できることを子供に親からの関数コールバックを下に渡すことができます。そのアイテムを識別するために使用するidまたは任意のプロパティを渡して、それを状態を使用して親コンポーネント内の配列から削除することができます。これは 'render() 'を呼び出してビューを更新します。 –