我在Redux中擁有自己的狀態,並且正在使用react-redux連接器將其綁定到我的React應用程序中。在設置狀態的初始運行期間,連接工作良好。然而,當我在reducer中更新狀態的一部分時,它不會被React讀取,所以組件不會再次渲染。當我做一些強制渲染的其他行爲時,國家實際上已經改變了。當Redux狀態改變到低於第一級時,React未更新
這似乎具有與狀態不是識別爲已經改變,並且,在反應-終極版的方法wrapWithConnect做,則storeChanged和propsChanged都評估爲假通過初始運行之後。一個線索可能是那些反應,在這些檢查比較淺層次。
問題是「當Redux中的狀態變化時,我需要做些什麼才能讓React顯示我的狀態變化」?
的狀態的相關部分低於
let thisOrder = Immutable.fromJS({
"projectNumber": '',
"orderHeader": {
"order_id": "",
"firstname": "",
"lastname": "",
"address1": "",
),
"orderProducts": [],
"lastOperation": ''});
即得到更新是orderProducts,產品的數組基本上看起來像
orderProducts:[{productSKU:'Y54345',productDesc:'What it is',price:"4.60",qty:2},
{productSKU:'Y54345',productDesc:'What what is',price:"9.00",qty:1}]
當在減速器更新數量或價格的部分下面(通過動作調用)由此產生的新狀態已更改
case OrderConstants.ORDER_PRODUCT_UPDATE:{
let productList = updateProductList(action.updateProduct, state.get(
'orderProducts'))
let newState = state.update('orderProducts',
productList).set('lastOperation', action.type);
return newState;}
最後,控制陣營組件然後發送被修整至相關部分下游
render: function() {
return (
<div>
<ProductList updateOrder={this.updateOrder()} products={this.props.products}/>
{this.submitContinueButton()} {this.submitButton()}
{this.cancelButton()}
</div>
</div>
)
}
});
// connect to Redux store
var mapStateToProps = function (state) {
return { ocoStore: state.toJS(),
products: state.get('orderProducts')};
};
export default connect(mapStateToProps)(OrderProducts);
上述所有的道具。請注意,代碼用於在初始加載時在較低組件上顯示產品信息。這是更新價格或數量刷新沒有發生。
你可以爲你的'updateProductList'方法提供代碼嗎? – DDA