2017-08-30 18 views
6

Trong các ví dụ được đưa ra trong các redux docs, luôn luôn có vẻ là một cái gì đó được trả về từ middlewares. Tuy nhiên, khi tôi gọi next(action) và trả lại không có gì, mọi thứ dường như hoạt động tốt.Tôi có luôn luôn cần phải trả về một giá trị từ một middleware redux không?

Trong số redux source dường như đang gọi dispatch trên giá trị trả về của mỗi phần mềm trung gian.

Điều này khiến tôi tin rằng nó cung cấp một cách tùy chọn để chạy công văn sau khi tất cả các phần mềm trung gian đã chạy.

Ai đó có thể xác nhận xem chúng tôi phải luôn trả lại giá trị từ phần mềm trung gian và nếu có thì tại sao?

Trả lời

8

Tôi thực sự tweeted about this just the other day.

Phương thức store.dispatch() theo mặc định trả về hành động đã được chuyển vào. Vì đường ống trung gian kết thúc quanh dispatch(), mỗi phần mềm trung gian có thể thay đổi giá trị đang được truyền qua đường ống và thay đổi giá trị trả về.

Nhiều phần mềm trung gian dựa vào việc có thể tự trả về giá trị hoặc sử dụng giá trị trả về quay lại. Ví dụ: redux-thunk trả lại bất kỳ thứ gì bạn trả về từ hàm thunk của bạn và điều này thường được sử dụng để có thể trả lại lời hứa từ một đoạn để bạn có thể chuỗi dispatch(somePromiseThunk()).then(() => {}).

Nếu phần mềm trung gian gọi next(action) nhưng không thực sự trả lại giá trị từ next(), nó có khả năng sẽ phá vỡ các khả năng đó. Các hành vi cụ thể sẽ phụ thuộc vào những gì middleware bạn đã thiết lập, và làm thế nào bạn có họ ra lệnh.

Bởi vì điều này, việc thực hành "đúng" là mỗi Redux middleware nênreturn next(action) theo mặc định trừ khi nó rõ ràng muốn thay đổi sự trở lại giá trị hành vi. Điều đó đảm bảo khả năng tương thích tốt nhất và khả năng kết hợp các phần tử trung gian với nhau.

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