Поток: компоненты высшего порядка для настройки слушателей магазина
После этой статьи Mixins являются мертвыми. Да здравствует композиция, я настроил компонент Pet, прислушивающийся к питомцу, и владелец сохраняет пользовательский компонент более высокого порядка. Но как можно передать owner_id из ресурса питомца в connectToStores
? Это просто тот случай, когда миксин лучше?
Pet = connectToStores(Pet, [PetStore, OwnerStore], (props) => {
return {
pet : PetStore.getOne(props.id),
owner : OwnerStore.getOne(ownerId), // this should come from pet.owner_id
};
});
1 ответ
Решение
Является PetStore.getOne
синхронное? Просто присвойте результат переменной.
Pet = connectToStores(Pet, [PetStore, OwnerStore], (props) => {
var pet = PetStore.getOne(props.id);
return {
pet : pet,
owner : OwnerStore.getOne(pet.owner_id),
};
});
Если это не синхронно, вашему магазину нужно будет отправить событие change, чтобы вызвать повторную визуализацию компонента, когда питомец станет доступен. Компонент также должен как-то обрабатывать животное, которое недоступно.
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
};
});