Clojurescript /试剂无需自动渲染

时间:2015-12-09 19:14:38

标签: clojurescript immutable.js reagent

我们之前使用FB React编写了代码,使用了一个不可变的app-state。但是,我们做了渲染,如:

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/

1 个答案:

答案 0 :(得分:2)

据我所知,试剂批次随requestAnimationFrame发生变化,组件实现了智能shouldComponentUpdate所以我会说默认值非常合理,我建议不要过早优化。

那就是说,为了完成你刚刚提出的要求,只需在完成所有这些昂贵的操作后执行原子突变。

只有在最后swap!reset!等时,试剂才会考虑触发渲染。