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! 等结束时,试剂才会考虑触发渲染。