Опитвам се да рендерирам отново своя 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
- alt.js 0.17.9