Meteor createContainer 重新订阅数据

Meteor createContainer resubscribe for data

这是我的 createContainer 包装器:

export default createContainer(({params}) => {
  const currentUser = Meteor.user();

  let itemsCount = 10;
  const subs = Meteor.subscribe('items', itemsCount);
  const items = Items.find({}, {sort: {country: 1, lastUpdateCheck: -1}}).fetch();

  return {
    items,
    currentUser,
  };
}, MyComponent);

我想在 MyComponent 组件中的某处放置 Load More 按钮,当按下按钮时增加 [=15= createContainer 中的 ]itemsCount 订阅更多数据。是否可以在 createContainer 中更改变量?或者其他方式?

你可以做到这一点的一种方法是使用 ReactiveVar 来保持你的 itemsCount,然后将这个 ReactiveVar 作为道具传递到你的 MyComponent 中。单击加载更多按钮时,您可以更改 itemsCount 值,这将导致您的 createContainer 代码重新 运行。快速示例:

const itemsCount = new ReactiveVar(10);

export default createContainer(({params}) => {
  const currentUser = Meteor.user();
  const subs = Meteor.subscribe('items', itemsCount.get());
  const items = Items.find(
    {}, 
    {sort: {country: 1, lastUpdateCheck: -1}}
  ).fetch();

  return {
    items,
    currentUser,
    itemsCount,
  };
}, MyComponent);

然后在您的 MyComponent 中,您将在单击加载更多按钮后在某处调用 this.props.itemsCount.set(X)