2017-04-11 134 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' –