2017-04-11 127 views
0

我已經建立一個頁面,它從服務器獲得一個對象數組的列表,我有幾個複選框作爲過濾器,用戶將檢查或取消選中複選框,我將不得不篩選列表,但我有問題現在重新列表。以下是我的部分代碼。過濾功能不反應在迴應

filterItem() => { 
    // logic goes here 
    console.log(filteredItems) 

} 

renderItems (items) => { 
    return(
    //map logic goes here 
) 
} 

render(){ 
    return(
     {this.renderItems(this.props.item)} 
    ) 
} 

我怎麼能重新描繪通過將filteredItems作爲參數去它renderItems功能?我試過this.renderItems(filteredItems),但沒有看到我的清單得到更新。

+0

由於您使用'redux'(根據答案在您的評論),並得到所有的數據'props'你應該'當用戶切換dispatch'的'action'一個複選框可以讓已經過濾的項目更新狀態。 –

+0

請考慮更新你的問題的所有細節(如使用'redux'),因爲沒有人可以猜到它們。 –

回答

0

可以在組件

constructor(){ 
    super(); 
    this.state = { 
     items: this.props.items 
    } 
} 

的狀態設定items{this.renderItems(this.state.items)}渲染。如果我清楚地瞭解你,並且當用戶單擊複選框時,你可以過濾並更改你的陣列,只需要setState這個新陣列,並且你的組件將會自我渲染。

0

組件的道具或狀態不會改變,所以你的組件不會被重新渲染。您可能想要使用狀態(請參閱文檔here)來存儲數據並相應地進行更改,以便組件重新呈現。

+0

不,這是道具,因爲我使用了redux。 'items'來自'const {items} = this.props' –