当store在flux中发出任何事件时,何时以及如何进行重新渲染
When and how does re-rendering happens when stores emits any event in flux?
我是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会反映出新的变化
相关文章:
- 如何强制对模态进行新渲染
- 如何在渲染新视图之前关闭所有事件
- 扩展成员应用程序,包括新的路线,现在没有任何渲染
- React选择性地不将新道具传递给渲染对象
- 何时创建新的Flux Store
- ajax重新渲染时获得新值
- jQuery:CSS更改后,何时查询新的外部高度
- 三.js静态场景,检测webgl渲染何时完成
- 何时使用“原型”一词向 javascript 中的对象添加新属性
- React 组件渲染在推送新 URL 时被多次调用
- 主干(也是木偶)尝试在集合开始时显示新记录,而不重新渲染整个集合
- 如何使用布局管理器重新排序/排序嵌套视图而不重新渲染
- 在backbone.js中,如何使用新的模型数据更新视图,同时在没有完整渲染的情况下保持排序顺序
- d3.js树映射新数据;t渲染
- Javascript知道何时加载新页面
- 让流星重新渲染“;新文档”;
- 不要在新页面加载或刷新时渲染React组件
- 加载/渲染一个新的基于平铺的地图到HTML5画布,替换一个旧的地图
- 使用underscore.js,是否有一种方法可以确定模板何时完成渲染?
- 关注标签触发模糊事件后新渲染的文本输入