从React todomvc 1中可以看出,确保 ui 与模型保持同步的一种方法是让模型订阅 render 函数(如下所示),以便 UI 在每次更改时呈现。
function render() {
React.render(
<TodoApp model={model}/>,
document.getElementById('todoapp')
);
}
model.subscribe(render);
render();
如果在应用程序中使用 React 路由器,则必须将 React.render 调用包装在路由器中,如本演示所示
Router.run(routes, function (Handler) {
React.render(<Handler/>, document.getElementById('example'));
});
那么,如果您还需要更新模型,您将如何使用路由器?即如何包装React.render
在路由器和function render
?这会产生范围问题
function render() {
Router.run(routes, function (Handler) {
React.render(
<TodoApp model={model}/>,
document.getElementById('todoapp')
);
});
}
model.subscribe(render);
render();