2016-03-10 10 views
7

Io corro in un problema strano per quanto riguarda Reagire & Redux in Internet Explorer 11.Redux non aggiornare immobili a IE11

Ho creato un applicazione reagire con redux & tonfo + promessa middleware. L'applicazione ha funzionato perfettamente in Chrome, Safari e Firefox, ma durante l'esecuzione in Internet Explorer 11 gli oggetti di scena non vengono aggiornati da React/Redux.

Durante il controllo della scheda di rete, è possibile vedere che le richieste Http vengono attivate correttamente. La registrazione del risultato di questo all'interno dei riduttori di Redux fornisce anche il risultato previsto. Ma sembra che restituire il nuovo stato non aggiorni gli oggetti di scena. Oppure attivare qualsiasi re-rendering dei componenti. (Solo in IE).

Ho provato google per vedere se c'erano persone nella stessa barca ma non sono riuscito a trovare nulla corrispondente al mio problema.

TLDR; Redux non aggiorna gli oggetti di scena e attiva il re-rendering/aggiornamento dei componenti dopo il ritorno dello stato. (solo in IE11).

riduttore:

const customers = (state = {customers: []}, action) => { 
    switch (action.type) { 
     case GET + _FULFILLED: 
      return Object.assign({}, state, { 
       customers: action.payload 
      }); 
      break; 
    } 
} 

action.payload ha il valore corretto; il ritorno non sembra aggiornare gli oggetti di scena.

anche errori nella console

RISOLTO ho dovuto aggiungere un polyfill object.assign; non sapeva che era necessario dopo l'utilizzo di babele

+2

mostrare il codice, per favore. –

+0

Avevo incontrato quello che sembrava essere questo problema. È risultato che avevo bisogno di applicare il busting della cache alle mie richieste ajax. – mjoyce91

risposta

3

Questo problema è a causa della scarsa suppport ES6 di IE11. Ho scoperto che è necessario il polyfill sia Promises e Object.assign.

Per quanto riguarda Babel, è probabilmente dovuto a Babel che trasmette solo codice non standard al codice standard. La maggior parte dei browser implementa già Promises/Object.assign per impostazione predefinita, quindi suppongo che le versioni più recenti di Babel non debbano trasporle più nel codice ES5

+0

Ho scoperto che avevo bisogno anche di un polyfill per Symbol. L'importazione del [babel-polyfill] (https://babeljs.io/docs/usage/polyfill/) nel punto di ingresso del mio codice era la chiave. – NealJMD

+0

Babel-polyfill ha risolto tutti i problemi di IE11 precedenti, ma il re-rendering non è ancora attivato. – FelixM

+0

stesso qui - @FelixM hai risolto questo? – amn41

0

IE 11 Non supporta le promesse, è necessario utilizzare un polyfill come ->https://github.com/stefanpenner/es6-promise

+0

Non è il problema; come ho detto le richieste http sono licenziate bene. Ho già usato un polyfill per questo :) –