2016-01-22 25 views
1

如何在單擊項目內的div時從data中刪除項目?如何從Reactjs中的陣列中刪除組件

var App = React.createClass({ 
    ... 
    handleSubmit: function(e) { 
    this.state.data.push({ x: this.state.x }); 
    } 
}); 

該項目的類刪除。

var Item = React.createClass({ 
    render: function() { 
     return (
     <li> 
      <div onClick={this.removeItem}></div> 
     </li> 
    ) 
    } 
}); 

列表類。

var ItemList = React.createClass({ 
    render: function() { 
    var items = this.props.data.map(function(item) { 
     return <Item x={item.x}> 
    }); 
    } 
}); 

回答

3

由於App組件管理data陣列,需要泡沫的移除請求從ItemItemListApp一路。

所以傳遞迴調從AppItemList

var App = React.createClass({ 
    ... 
    removeItem: function(index) { 
    this.setState(function(state) { 
     var newData = state.data.slice(); 
     newData.splice(index, 1); 
     return {data: newData}; 
    }); 
    }, 
    render: function() { 
    return (
     ... <ItemList onRemove={this.removeItem} /> ... 
    ); 
    }, 
    ... 
}); 

,並傳遞迴調到每個Item

最後,調用onRemoveItem

var Item = React.createClass({ 
    ... 
    removeItem: function() { 
    this.props.onRemove(this.props.index); 
    }, 
}); 
+0

在你回答,不應該'removeItem'是'onRemo已經'? –

+0

爲什麼你使用'this.props.x'作爲參數onRemove –

+0

是的,抱歉。發佈後我發現了一些錯誤。我想我現在已經抓住了他們中的大部分,但是讓我知道我是否錯過了任何東西。 :) – alltom