Which of the following is the correct way to dispatch an action using the useDispatch hook?
4 phương ánCó giải thích
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "const dispatch = useDispatch(); dispatch({ type: 'ACTION_TYPE' });". Action trong Redux là một đối tượng thuần có trường type mô tả việc vừa xảy ra, có thể kèm payload; useDispatch của react-redux trả về hàm dispatch của store, và gọi dispatch với đối tượng có khoá type sẽ gửi action đó tới reducer. "const dispatch = useDispatch(); dispatch('ACTION_TYPE');" truyền một chuỗi, trong khi Redux yêu cầu action là đối tượng thuần nên báo lỗi Actions must be plain objects. "const dispatch = useDispatch(); dispatch(() => { type: 'ACTION_TYPE' });" viết arrow function có ngoặc nhọn: ngoặc nhọn ở đây là thân hàm, type: chỉ là một nhãn lệnh chứ không phải đối tượng, nên hàm trả về undefined; dispatch một hàm chỉ chạy được nhờ middleware thunk, và kể cả khi đó cũng không có action nào tới reducer. "const dispatch = useDispatch(); dispatch({ action: 'ACTION_TYPE' });" dùng khoá action thay cho type, đối tượng thiếu type nên Redux báo lỗi action không có thuộc tính type.