Clojurescript/reagent 没有自动渲染
Clojurescript/reagent without automatic rendering
我们之前使用 FB React 编写代码,使用单个不可变的应用程序状态。然而,我们做了这样的渲染:
model = immutable({name:"X"});
function change_name(name){
swap(render(change("name", name, model))))
}
渲染位置:
function render(state){
ReactDOM.render(<Todos app_state={state} />,document.getElementById('main'));
}
在试剂中,我们使用 r/atom,在每次交换时都会检查我们是否需要进行另一次渲染。对于非常简单的东西,比如上面的那个,没关系,但是如果操作非常复杂,包括很多来回 ajax 操作,手动控制渲染应该发生的时间会更好。
我们之前工作的 TODOMVC 在这里:http://jsfiddle.net/danbunea1/bL62p47n/
据我所知,试剂批次随 requestAnimationFrame
发生变化,并且组件实现了智能 shouldComponentUpdate
,所以我想说默认值对性能非常敏感,我建议不要过早优化。
就是说,要完成您刚才的要求,只需在完成所有这些昂贵的操作后执行原子突变即可。
只有当你 swap!
、reset!
等结束时,试剂才会考虑触发渲染。
我们之前使用 FB React 编写代码,使用单个不可变的应用程序状态。然而,我们做了这样的渲染:
model = immutable({name:"X"});
function change_name(name){
swap(render(change("name", name, model))))
}
渲染位置:
function render(state){
ReactDOM.render(<Todos app_state={state} />,document.getElementById('main'));
}
在试剂中,我们使用 r/atom,在每次交换时都会检查我们是否需要进行另一次渲染。对于非常简单的东西,比如上面的那个,没关系,但是如果操作非常复杂,包括很多来回 ajax 操作,手动控制渲染应该发生的时间会更好。
我们之前工作的 TODOMVC 在这里:http://jsfiddle.net/danbunea1/bL62p47n/
据我所知,试剂批次随 requestAnimationFrame
发生变化,并且组件实现了智能 shouldComponentUpdate
,所以我想说默认值对性能非常敏感,我建议不要过早优化。
就是说,要完成您刚才的要求,只需在完成所有这些昂贵的操作后执行原子突变即可。
只有当你 swap!
、reset!
等结束时,试剂才会考虑触发渲染。