2015-12-12 22 views
9

Tôi đang gặp phải một thời gian khó khăn để các bộ giảm tốc của tôi có thể hoán đổi nóng.Làm cho bộ giảm tốc Redux và các bộ phận khác không thể nạp nóng

Tôi đang sử dụng Webpack và react-transform-hmr. Với điều này, tất cả CSS và các thành phần được nạp nóng khi tôi lưu, nhưng khi tôi thử và làm việc trên một loại kiểu khác - đáng chú ý nhất là các bộ giảm tốc - nó sẽ cho tôi biết làm mới đầy đủ.

Tôi đã tìm ra rằng điều này là do tôi cần tải lại bộ giảm tốc một cách rõ ràng và chấp nhận sự kiện. Mà tôi đang làm với mã này trong store.js tôi:

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

reducers/index xuất khẩu là sản phẩm giảm root.

Tuy nhiên bây giờ khi tôi chạy này nó vẫn nói với tôi [HMR] Cannot check for update (Full reload needed và cũng lỗi nói [HMR] TypeError: currentReducer is not a function

Vì vậy, - Tôi cần một số giúp đỡ việc này để làm việc. Mã này hiện có sẵn tại https://github.com/wesbos/Simple-Redux và bạn có thể tái tạo nó bằng cách thực hiện:

  1. npm install
  2. npm start
  3. mở localhost: 3000 trong trình duyệt của bạn
  4. Sửa một giảm - mở posts.js và thay đổi số trên đường dây 6 đến bất kỳ điều gì khác

Trả lời

18

Tôi chưa xem xét kỹ nhưng phỏng đoán tốt nhất của tôi là this issue.
Babel 6 không còn cố gắng xuất ES6 mặc định kết quả của module.exports.

Vì vậy, thay vì

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

có thể bạn muốn

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

mà phù hợp với sản lượng Babel 6 cho xuất khẩu mặc định ES6.

+1

Đó là nó -Cảm ơn bạn! – wesbos

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