JSFiddle : http://jsfiddle.net/jwm6k66c/315/하지만 다른 점은 클래스 종속성이있는 더 복잡한 아키텍처에서 항목 삭제를 구현하려고한다는 것입니다.ReactJS에서 여러 클래스를 가질 때 항목을 삭제하는 방법은 무엇입니까?
또한 항목 작성이 완벽하게 작동한다고 언급 할 가치가 있지만 항목 삭제는 다른 방식으로 구현해야합니다 (버튼으로 모든 항목을 삭제하고 싶지 않기 때문에 단추는 해당 항목 만 삭제해야 함). 또한 각각의 클래스에서 propType으로 deleteItem: React.PropTypes.func.isRequired
을 가지고 있지만 올바른지 확실하지 않습니다.
onDelete(item){
e.preventDefault();
deleteItem(item);
}
render(){
const {item} = this.props;
return(
<li>
<a onClick={this.onClick.bind(this)}>
{item.name}
</a><br/>
<a onClick={this.onClick.bind(this)}>
{item.price}
</a><br/>
<a onClick={this.onClick.bind(this)}>
{item.donation}
</a><br/>
<a onClick={this.onClick.bind(this)}>
{item.image}
</a><br/>
<form onSubmit = {this.onDelete.bind(this)}>
<input type = "submit" value = "Eliminar"/>
</form>
</li>
)
}
그런 다음 우리가 App.jsx의 방법이 있습니다 :
그래서 처음 내 Item.jsx 클래스의 렌더링 내가 그들의 '삭제'(Eliminar) 버튼을 포함한 '항목을'렌더링 onDelte 방법을 가지고
deleteItem(item){
const newState = this.state.items;
if (newState.indexOf(item) > -1) {
newState.splice(newState.indexOf(item), 1);
this.setState({items: newState})
}
render(){
return(
<ItemSection
items = {this.state.items}
addItem = {this.addItem.bind(this)}
setItem = {this.setItem.bind(this)}
deleteItem = {this.deleteItem.bind(this)}
/>
)
그런 다음 ItemForm과 ItemList는 ItemSection에서 가져온 클래스입니다. ItemSection은 deleteItem을 포함한 모든 proptypes의 div를 렌더링합니다.
그리고 마지막으로 여기 ITEMLIST의 렌더링 방법입니다 :
render(){
return(
<ul>{
this.props.items.map(itm =>{
return <Item
item = {itm}
key = {itm.id}
setItem = {this.props.setItem}
deleteItem = {this.props.deleteItem}
/>
})
}</ul>
)
}
파일을 렌더링하는 것은 내가 캐치되지 않는 오류를 받고 있어요 (그것이 바로 내 개발자 콘솔에서 사라집니다 때문에 그것이 무엇인지 읽을 수 없습니다) 때의 일이 무엇 앱이 다시 시작됩니다.
고마워요! 괜찮 았어.그러나 스프레드 연산자를 사용하여 작업을 수행하지는 못했습니다. newState는 this.state.item이어야합니다. 그렇지 않으면 'newState.indexOf가 함수가 아닙니다'라는 오류가 발생합니다. –