我有一个单一对象状态驱动的应用程序,其状态分派/订阅逻辑将与 React '流' 分开(即没有像 React-Redux 绑定这样的助手)。
当状态改变时,我的应用会重新渲染。
以下两种实现之间有什么区别,或者有任何反模式问题吗?(很抱歉让我不使用 JSX 的任何人感到不安)
var myElementClass = React.createClass(
render : function() {
//make use of this.props.state...
}
);
var myAppContainerComponent = React.createElement(
myElementClass,
{state : dataStore.getState()}
);
dataStore.onChange(function(){
ReactDOM.render(myAppContainerComponent, someDOMContainer);
});
对...
var myElementClass = React.createClass(
componentDidMount : function() {
var self = this;
this.props.store.onChange(function(){
self.setState(self.props.store.getState());
});
},
render : function() {
//make use of this.state...
}
);
var myAppContainerComponent = React.createElement(
myElementClass,
{store : dataStore}
);
ReactDOM.render(myAppContainerComponent, someDOMContainer);
第一个强制应用程序范围从“外部”重新渲染,即使用 ReactDOM。第二个在容器应用程序中做同样的事情。
我做了一些性能测试,实际上并没有看到任何区别。我会遇到问题吗?多次点击 ReactDOM.render() 是个问题吗?
我知道有些人会评论说这两种方法都可能很昂贵,因为它们都在重新渲染整个应用程序(这不是 React 的用途;)),但这超出了这个问题的范围。