Flux:用于设置商店监听器的高阶组件

时间:2015-04-26 23:30:13

标签: reactjs reactjs-flux flux

根据这篇文章Mixins Are Dead. Long Live Composition,我设置了一个Pet组件,用于监听宠物和所有者商店用户的更高订单组件。但是如何将来自宠物资源的owner_id传递给connectToStores?这只是mixins优越的情况吗?

Pet = connectToStores(Pet, [PetStore, OwnerStore], (props) => {
  return {
    pet   : PetStore.getOne(props.id),
    owner : OwnerStore.getOne(ownerId), // this should come from pet.owner_id                                        
  };
}); 

1 个答案:

答案 0 :(得分:1)

PetStore.getOne是否同步?只需将结果分配给变量。

Pet = connectToStores(Pet, [PetStore, OwnerStore], (props) => {
  var pet = PetStore.getOne(props.id);

  return {
    pet   : pet,
    owner : OwnerStore.getOne(pet.owner_id),    
  };
});

如果不同步,您的商店将需要发出更改事件,以便在宠物可用时重新呈现组件。该组件还将以某种方式处理宠物不可用。

Pet = connectToStores(Pet, [PetStore, OwnerStore], (props) => {
  var pet, loaded, owner;

  pet = PetStore.getOne(props.id);
  if (pet) {
    loaded = true;
    owner = OwnerStore.getOne(pet.owner_id);
  } else {
    loaded = false;
    owner = null;
  }

  return {
    pet    : pet,
    owner  : owner,
    loaded : loaded
  };
});