2016-03-10 29 views
7

tôi đang chạy vào một vấn đề kỳ lạ về Phản ứng & Redux trong Internet Explorer 11.Redux không cập nhật tài sản trong IE11

tôi đã tạo ra một ứng dụng Phản ứng với Redux & thunk + lời hứa middleware. Ứng dụng cho biết hoạt động hoàn toàn tốt trong Chrome, safari và firefox nhưng khi chạy trong Internet explorer 11 đạo cụ không được cập nhật bởi React/Redux.

Trong khi kiểm tra tab mạng, tôi có thể thấy rằng các yêu cầu Http đang được kích hoạt tốt. Việc ghi nhật ký kết quả của điều này trong bộ giảm tốc Redux cũng cho kết quả mong đợi. Nhưng có vẻ như nếu trở về trạng thái mới thì không cập nhật đạo cụ. Hoặc kích hoạt bất kỳ việc render lại các thành phần nào cả. (Chỉ trong IE).

Tôi đã thử google để xem liệu có người ở cùng một thuyền nhưng tôi không thể tìm thấy bất kỳ điều gì phù hợp với vấn đề của mình.

TLDR; Redux không cập nhật các đạo cụ và kích hoạt tái render/cập nhật các thành phần sau khi trở về trạng thái. (chỉ trong IE11).

Giảm:

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

action.payload có giá trị chính xác; trở về dường như không cập nhật các đạo cụ.

Cũng không có lỗi trong giao diện điều khiển

SOLVED tôi đã có thêm một polyfill object.assign; không biết rằng được yêu cầu sau khi sử dụng babel

+2

hiển thị mã, vui lòng. –

+0

Tôi đã gặp phải những gì dường như là vấn đề này. Nó bật ra tôi cần thiết để áp dụng bộ nhớ cache busting để yêu cầu ajax của tôi. – mjoyce91

Trả lời

3

Vấn đề này là do ES6 suppport nghèo IE11 của. Tôi thấy rằng bạn cần phải điền vào cả hai số PromisesObject.assign.

Đối với Babel, có thể do Babel chỉ chuyển mã không chuẩn thành mã chuẩn. Hầu hết các trình duyệt đã triển khai Promises/Object.assign theo mặc định vì vậy tôi đoán các phiên bản Babel mới nhất không cần phải chuyển mã sang mã ES5 nữa

+0

Tôi thấy rằng tôi cũng cần một polyfill cho Symbol. Nhập [babel-polyfill] (https://babeljs.io/docs/usage/polyfill/) tại điểm vào mã của tôi là chìa khóa. – NealJMD

+0

Các babel-polyfill cố định tất cả các vấn đề trên IE11 cho tôi, nhưng tái render vẫn không được kích hoạt. – FelixM

+0

cùng ở đây - @FelixM bạn đã giải quyết vấn đề này chưa? – amn41

0

IE 11 Không hỗ trợ những lời hứa, bạn sẽ cần phải sử dụng một polyfill như ->https://github.com/stefanpenner/es6-promise

+0

Nó không phải là vấn đề; như tôi đã nói, các yêu cầu http được kích hoạt tốt. Tôi đã sử dụng một polyfill cho điều này :) –

Các vấn đề liên quan