当store在flux中发出任何事件时,何时以及如何进行重新渲染

When and how does re-rendering happens when stores emits any event in flux?

本文关键字:何时 新渲染 何进行 事件 flux store 任何      更新时间:2023-09-26

我是react + flux中的新手。我有点困惑的是,当事件由store发出时,何时以及如何进行重新渲染。在我的应用程序中,我正在监听函数componentWillMount()中的一个事件,该事件在渲染发生之前被调用。它工作得很好,我的视图也在更新。我只关心一次是什么导致我的组件重新渲染。代码如下:

函数更新存储

 createTodo(text){
const id = Date.now();
this.todos.push({
    id,
    text,
    complete:false
});
this.emit("change");

我的组件——listener方法

componentWillMount(){
TodoStore.on("change", () => {
    this.setState({
        todos: TodoStore.getall()
    })
})
}

这里是什么导致我的组件重新渲染?

每次调用setState时,组件都会重新渲染。

见:https://facebook.github.io/react/docs/component-api.html

setState()将总是触发重新渲染,除非在shouldComponentUpdate()中实现了条件渲染逻辑。如果使用可变对象,并且逻辑不能在shouldComponentUpdate()中实现,则只在新状态与前一个状态不同时调用setState(),以避免不必要的重新呈现。

当你在react应用中调用setState()时,它会导致状态渲染。基本上每次状态改变时你的react组件中的渲染函数都会被执行你的UI会反映出新的变化