React Native ListView过滤

时间:2017-07-01 23:12:49

标签: reactjs listview react-native

我使用的是React-native,而我是一个无法解决的问题。

我有一个带有x元素的列表(ListView),用户可以在不同的日期过滤此列表。当用户选择日期时,我过滤列表并从onClick in render中调用this.setState()。

这给了我: "警告:在现有状态转换期间(例如在render或其他组件的构造函数中)无法更新。渲染方法应该是道具和状态的纯函数;构造函数副作用是反模式,但可以移动到componentWillMount。"

我得到这个是因为我在渲染中有一个调用setState的按钮。

我尝试使用componentWillMount,componentWillUpdate,componentDidUpdate,但它没有用。

<Accordion
  sections={this.state.uniqueAvailableTimeSlots}
  renderHeader={this.renderAccordionHeader}
  renderContent={this.renderAccordionBody}
  onChange={this.onChange()}
/>

//OnChange will be called when a filter is choosen
//I filter a list and put it in filteredTimeSlots
onChange = () => {
  const filteredTimeSlots = this.state.availableTimeSlots.filter((timeSlot) => {
    return timeSlot.timeSlot.includes(this.state.uniqueAvailableTimeSlots[index]);
  });
  //I set the state for the new list
  this.setState({
    availableTimeSlotsFiltered: this.state.availableTimeSlotsFiltered.cloneWithRows(filteredTimeSlots)
  });

}

1 个答案:

答案 0 :(得分:0)

您的错误在onChange={this.onChange()}

应为onChange={ this.onChange }

您正在调用道具中的函数,因此警告消息。