如何只在一个值发生变化时阻止整个FlatList重新渲染

时间:2018-05-28 21:41:23

标签: reactjs react-native mobx

我实现了一个React Native FlatList,但每当我将 一个 元素推送到FlatList数据时,FlatList的每个子节点都会被重新渲染 两次

有没有办法只渲染 new 元素而不是整个FlatList?

我认为这是因为我渲染的组件的日期道具发生了变化,触发了第一次重新渲染,然后整个FlatList依赖于this.props.store.dates,整个FlatList重新渲染第二次。

以下是我实现FlatList的方法:

@inject("store")
@observer
class Agenda extends Component {
  render() {
    return (
      <FlatList
        data={toJS(this.props.store.dates)}
        renderItem={({ item }) => <DayInAgenda date={item} />}
        keyExtractor={(item) => { return item } }
      />
    );
  }
}

以下是我实施Mobx商店的方式:

export default class Store {
  @observable dates = [
    "2019-05-10",
    "2020-05-17",
    "2021-05-18",
  ]

  @action addDate(date) {
    this.dates.push(date)
  }
}

1 个答案:

答案 0 :(得分:0)

好的,我所要做的就是让DayInAgenda成为观察者。