Я пытаюсь повторно отобразить свой компонент React с новыми реквизитами, полученными из магазина, но реквизиты, похоже, не обновляются. У меня этот подход нормально работает, только в данном случае нет.
Компонент
class Cart extends React.Component {
static getStores() {
return [CartStore];
}
static getPropsFromStores() {
return CartStore.getState();
}
componentDidMount() { // tried componentWillMount also
CartActions.updateCart();
}
render() {
console.log(this.props.cart); // empty object
return (
<div className="cart">
{this.props.cart.map((item, i) => <div key={i}>{item.get('name')}</div>)}
</div>
);
}
}
export default connectToStores(Cart);
Действия
class CartActions {
updateCart() {
this.dispatch();
}
}
export default alt.createActions(CartActions);
Магазин
class CartStore {
constructor() {
this.bindActions(CartActions);
this.cart = Immutable.fromJS([]);
}
updateCart() {
this.cart = Immutable.fromJS(JSON.parse(localStore.getItem('cart')));
console.debug('cart', this.cart); // returns the correct object
}
}
export default alt.createStore(CartStore, 'CartStore');
Хранилище получает событие действия и извлекает правильный объект из localStorage. Однако свойства компонента не обновляются, как обычно.
Любая помощь приветствуется! Спасибо :)
Версии
- Реагировать 0.14.3
- альт.js 0.17.9