Ho il mio stato in Redux e sto usando il connettore react-redux per legarlo alla mia applicazione React. Durante la prima esecuzione in cui è impostato lo stato, la connessione funziona alla grande. Tuttavia, quando aggiorno una parte dello stato nel mio riduttore, non viene letto come modificato da React, quindi il componente non esegue nuovamente il rendering. Quando faccio qualche altra azione che costringe un rendering, lo stato è stato, in realtà, cambiato.React non si aggiorna quando lo stato di Redux viene modificato sotto il primo livello
Sembra avere a che fare con lo stato non essendo riconosciuti come aver cambiato e, nel metodo wrapWithConnect di reagire-redux, lo storeChanged e propsChanged entrambi restituiscono false dopo l'esecuzione iniziale attraverso. Un indizio potrebbe essere essere che reagisce-redux si confronta a un livello superficiale in quei controlli.
La domanda è: "quello che devo fare per ottenere Reagire per visualizzare modifiche al mio stato quando cambia lo stato di Redux"?
La parte rilevante dello stato è al di sotto
let thisOrder = Immutable.fromJS({
"projectNumber": '',
"orderHeader": {
"order_id": "",
"firstname": "",
"lastname": "",
"address1": "",
),
"orderProducts": [],
"lastOperation": ''});
La sezione che viene aggiornato è orderProducts, una vasta gamma di prodotti che si presenta fondamentalmente come
orderProducts:[{productSKU:'Y54345',productDesc:'What it is',price:"4.60",qty:2},
{productSKU:'Y54345',productDesc:'What what is',price:"9.00",qty:1}]
Durante l'aggiornamento qty o il prezzo nel riduttore sotto (chiamato da un'azione) il risultante newState ha le modifiche
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;}
.210
Infine, il controllo React componente che quindi invia i puntelli valle
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);
Tutto quanto sopra viene tagliato le relative sezioni. Si noti che il codice funziona per visualizzare le informazioni sul prodotto sui componenti inferiori durante il caricamento iniziale. È quando si aggiorna il prezzo o qty che l'aggiornamento non si verifica.
Puoi fornire il codice per il tuo metodo 'updateProductList'? – DDA