2015-12-12 34 views
9

Sto attraversando un periodo difficile per far sì che i miei riduttori siano sostituibili a caldo.Rende riduttori Redux e altri componenti non caricabili a caldo

Sto usando Webpack e react-transform-hmr. Con questo, tutto il CSS ei componenti sono caricati a caldo quando salvo, ma quando provo a lavorare su un altro tipo di tipo - in particolare i riduttori - mi dirà di fare un aggiornamento completo.

Ho capito che questo è perché ho bisogno di ricaricare esplicitamente i riduttori e accettare l'evento. Quale che sto facendo con questo codice nel mio store.js:

if(module.hot) { 
    module.hot.accept('./reducers/',() => { 
    const nextRootReducer = require('./reducers/index'); 
    store.replaceReducer(nextRootReducer); 
    }); 
} 

reducers/index esporta il riduttore di root.

Comunque ora quando faccio funzionare questo mi dice ancora [HMR] Cannot check for update (Full reload needed e anche gli errori che dicono [HMR] TypeError: currentReducer is not a function

Così - Ho bisogno di aiuto per questo al lavoro. Il codice è disponibile presso https://github.com/wesbos/Simple-Redux ed è possibile riprodurlo facendo:

  1. npm install
  2. npm start
  3. Aperto localhost: 3000 nel tuo browser
  4. Modifica un riduttore - aperta posts.js e cambiare il numero on line 6 a qualsiasi altra cosa

risposta

18

Non ho guardato da vicino ma la mia ipotesi migliore è che sia this issue.
Babel 6 non tenta più di rendere ES6 esportazioni predefinite il risultato di module.exports.

Così, invece di

const nextRootReducer = require('./reducers/index'); 

probabilmente si desidera

const nextRootReducer = require('./reducers/index').default; 

cui corrisponde l'uscita Babel 6 per ES6 esportazioni di default.

+1

Era proprio così-grazie! – wesbos

Problemi correlati