2016-11-10 55 views
0

我有一個列表,像這樣創建刪除元素:使用狀態,按鈕從列表

return (this.state.limit).fill().map((_,index) => { 
    return ( 
    <div key={`${index}`}> Item </div> 
) 
) 

如何創建一個按鈕,它可以讓我刪除特定的div元素以及減少國家限制?

+0

更新'limit'狀態(通過去除的setState的項目),並讓反應再次渲染它。 –

+0

更新狀態只會刪除最後一個div。我正在尋找一種方法來移除數組中間的div元素。 – kermitvomit

+0

然後刪除該狀態中的特定項目。 –

回答

2

在React中,您將不得不幾乎將所有內容綁定到數據。在你的例子中,所有這些項目都應該由一些基礎數據來表示。下面是顯示這是一個非常簡單的例子:

class Example extends React.Component { 
 
    constructor() { 
 
    super(); 
 
    this.state = { 
 
     data: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5'], 
 
    }; 
 
    } 
 
    removeItem(item) { 
 
    let data = this.state.data.filter((_, i) => i != item); 
 
    this.setState({ data }); 
 
    } 
 
    render() { 
 
    return (
 
    <div> 
 
     {this.state.data.map((item, i) => <div key={i} onClick={() => this.removeItem(i)}>{item}</div>)} 
 
    </div> 
 
    ); 
 
    } 
 
} 
 

 
ReactDOM.render(<Example/>, document.getElementById('View'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> 
 
<div id="View"></div>

+0

謝謝!這是我需要的指導:) – kermitvomit

+0

@FabianSchultz哎呀,好點。不理我! –

+0

@FabianSchultz我刪除了該評論,所以有人不會看到這一點,並感到困惑。 –

0

創建一個按鈕

<button onClick={removeDiv}> 
    Remove div 
</button> 

添加功能removeDiv

function removeDiv(){ 
    this.state.limit.shift() 
    this.setState({limit: this.state.limit}) 
} 

當改變狀態,您的組件將重新呈現它的自我與新的狀態。