Reactjs Meteor createContainer是否在注入的参数更改时重新计算?
我有一个Meteor/React应用程序,正在使用MeteorReactjs Meteor createContainer是否在注入的参数更改时重新计算?,reactjs,meteor,Reactjs,Meteor,我有一个Meteor/React应用程序,正在使用MeteorcreateContainercontainer方法从Mongo收集数据,并将结果传递给子组件。我发现,当任何参数更改时,Mongo查询将重新计算(即使参数不会影响Mongo查询本身),并将道具发送到子组件上,从而导致其无法重新渲染。这是createContainer应该采用的工作方式,还是只在查询返回的数据发生更改时发送道具 export default MyComponentContainer = createContainer(
createContainer
container方法从Mongo收集数据,并将结果传递给子组件。我发现,当任何参数更改时,Mongo查询将重新计算(即使参数不会影响Mongo查询本身),并将道具发送到子组件上,从而导致其无法重新渲染。这是createContainer
应该采用的工作方式,还是只在查询返回的数据发生更改时发送道具
export default MyComponentContainer = createContainer(( params ) => {
// Some Mongo queries...
var query results = MyColl.find({}).fetch();
return {
query results
};
}, MyComponent);
是的,当params
更改时,它将重新计算,其包装的组件将重新渲染,因为params
将被传递到MyComponent
,而React将重新渲染MyComponent
,因为其道具已更改
如果您的结果
是一个大数组,并且您不想重新渲染结果
,我建议您在MyComponent
中使用另一个子组件来渲染结果
:
const ResultComponent = (props) => props.results.map(...);
const MyComponent = (props) => ({
<div>
<ResultComponent results={props.results} />
</div>
});
constresultcomponent=(props)=>props.results.map(…);
常量MyComponent=(道具)=>({
});
这样一来,ResultComponent
只会在结果
更改时重新渲染要添加到这一点,您还可以使用来防止MyComponent
在不需要的情况下重新渲染。一般来说,在React中,如果五分之一的道具更改,这是否会导致此组件中的所有位置,在使用这五个道具的地方,更新它们的值?如果你的组件没有子组件,当其中一个道具发生变化时,组件内部的所有内容都将重新渲染。你会说这与你期望的反应方式相反,即它知道某个道具没有发生变化,因此不更新它,或者是整个组成部分?