2016-03-10 188 views
7

更新屬性我遇到關於一個奇怪的問題作出反應&終極版的Internet Explorer 11終極版不是在IE11

我已經創建了終極版&的thunk +承諾中間件陣營的應用程序。該應用程序在Chrome,safari和firefox中運行得很好,但在Internet Explorer 11中運行時,道具不會被React/Redux更新。

在檢查網絡選項卡時,我可以看到Http請求正在被觸發。在Redux reducer中記錄這個結果也可以得到預期的結果。但似乎返回新狀態並不會更新道具。或者觸發任何重新渲染的組件。 (只在IE中)。

我試圖谷歌,看看是否有人在同一條船,但我找不到任何匹配我的問題。

TLDR; Redux不更新道具並在返回狀態後觸發組件的重新渲染/更新。 (只在IE11中)。

減速機:

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

action.payload具有正確的值;返回似乎並沒有更新道具。

此外,在控制檯

解決我不得不添加一個object.assign填充工具沒有錯誤;不知道是用巴貝爾

+2

請顯示代碼。 –

+0

我曾遇到過似乎是這個問題。事實證明,我需要將緩存清除應用於我的ajax請求。 – mjoyce91

回答

3

這個問題是因爲IE11的窮人ES6 suppport的。我發現你需要填寫PromisesObject.assign

至於Babel,可能是由於Babel只將非標準代碼轉換爲標準代碼。大多數瀏覽器默認已經實現了Promises/Object.assign,所以我猜最新的Babel版本不需要將其轉換爲ES5代碼

+0

我發現我還需要用於符號的polyfill。關鍵是在入口點導入[babel-polyfill](https://babeljs.io/docs/usage/polyfill/)到我的代碼。 – NealJMD

+0

babel-polyfill爲我解決了上述所有IE11問題,​​但重新渲染仍然沒有觸發。 – FelixM

+0

也一樣 - @FelixM你解決了嗎? – amn41