我有一个输入组件,它获取 url 作为输入并解析它(resolve=get 以某种方式预览该 url):
var resolver = require('resolver');
var UrlResolver = React.createClass({
statics: {
storeListeners: {
onResolverStore: [ ResolverStore ]
}
},
getInitialState: function() {
return { value: '', resolves: [] };
},
onResolverStore: function(data) {
var resolves = [].concat(this.state.resolves, data);
this.setState({ resolves: resolves });
},
handleChange: function(event) {
var value = event.target.value;
this.setState({ value: value });
this.executeAction(resolver, value);
},
render: function () {
return (
<input value={ this.state.value } onChange={ this.handleChange } />
{
this.state.resolves.map(function(data) {
return <ResolveView data={ data } />;
});
}
);
}
});
如您所见,UrlResolver 等待 ResolverStore 上的更改。当输入发生变化时,可能会发生这种变化。我的问题是当我有 10 个 UrlResolvers 时。在这种情况下,对一个输入的任何更改都会更改 ResolverStore,这将触发 10 个不同的事件,因此 10 个不同的 setStates 将导致 10 次重新渲染。所有这一切,而只有一个输入应处理此更改。这样 9 个组件也会添加一个不属于它们的解析数据。
这种需求的解决方案是什么?