3
我試圖用從商店收到的新道具重新渲染我的React組件,但道具似乎沒有得到更新。這種方法通常適用於我,只是在這種情況下它不適用。Flux/Alt沒有從商店更新道具
組件
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');
商店接收活動e從localStorage發泄並檢索正確的對象。但是,組件的道具不會像往常一樣更新。
任何幫助表示讚賞!謝謝:)
版本
- 陣營0.14.3
- alt.js 0.17.9
通量實現alt.js是做對我來說。 connectToStores方法負責處理這個問題。正如我所說,如果我,例如查詢API,它就會起作用。但與localStore它不知道。 –
這種方法可以工作,但是它可以防止真正的同構渲染,在服務器和客戶端上生成不同的散列。 –
這個問題是舊的,但我現在有同樣的問題,我使用connectToStores,我可以看到商店收到的行動,但視圖不會更新狀態。 – elaich