Meteor createContainer重新订阅数据

时间:2016-08-23 04:53:30

标签: meteor meteor-react

这是我的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 组件中的某处放置加载更多按钮,按下按钮时,在中增加 itemsCount createContainer 订阅更多数据。是否有可能在 createContainer 中更改变量?还是其他任何方式?

1 个答案:

答案 0 :(得分:2)

一种方法是使用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)