【发布时间】:2015-04-19 18:26:47
【问题描述】:
从React todomvc1 可以看出,确保 ui 与模型保持同步的一种方法是让模型订阅渲染函数(如下所示),以便 UI每次更改都会呈现。
function render() {
React.render(
<TodoApp model={model}/>,
document.getElementById('todoapp')
);
}
model.subscribe(render);
render();
如果在应用程序中使用 React 路由器,则必须将 React.render 调用包装在路由器中,如 showas shown by this demo
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();
【问题讨论】:
-
您能否提供更多关于您的
model实例来自何处的上下文?解决方案的一部分是决定模型状态应该从哪里实例化以及它应该在哪里存在,因此可以从组件本身内部触发重新渲染。 -
@insin 对此感到抱歉,想一想,就像在 TodoMVC 演示中一样,那是我看到模型周围的包装器以更新 UI github.com/tastejs/todomvc/tree/master/examples/react/js
-
您忘记添加链接,即 [1] 和 [2] 部分。
-
@QuyNguyen2013 抱歉,现在添加链接
-
@TomokoYamaguchi 有点晚,但请参阅下面的解决方案
标签: reactjs react-router