reactjs - 监听组件中的某些 redux 操作
问题描述
有没有办法使用redux-thunk
中间件来监听组件中的某些操作?还是我真的需要使用redux-saga
或redux-observable
其他东西来实现这一目标?
这是我的 redux-thunk 异步操作,我只是想在TICKET_CREATE_SUCCESS
发送操作后关闭对话框
export const createTicketEffects = (ticket: Ticket): ThunkAction<void, RootState, unknown, Action<string>> => {
return async (dispatch: ThunkDispatch<{}, {}, AnyAction>) => {
dispatch(TicketActions.createTicket(ticket));
return await TicketService.create(ticket)
.then(({ data }) => {
dispatch(TicketActions.createTicketSuccess(data.data, data.message));
})
.catch((error) => dispatch(TicketActions.createTicketError(error)));
};
};
谢谢
解决方案
不是在你问的意义上,不。组件不能“监听分派的动作”。
但是,thunk 可以返回一个承诺,您可以等待该承诺从以下位置返回dispatch(someThunk())
:
- https://redux.js.org/tutorials/essentials/part-5-async-logic#checking-thunk-results-in-components
- https://redux.js.org/tutorials/fundamentals/part-7-standard-patterns#thunks-and-promises
另外,请注意,您可以使用 Redux Toolkit 的createAsyncThunk
API 简化该 thunk:
const createTicketEffects = createAsyncThunk(
'tickets/createTickets',
async (ticket: Ticket) => {
const response = await TicketService.create(ticket);
return res.data; // example: not sure what you're doing with `res.message`
}
)
推荐阅读
- python - 如何在 django 中将变量的值从视图发送到表单?
- c# - C#、YouTube 数据 API、CommentThreads.List()、使用 OAuth 时身份验证范围不足
- excel - 使用 VBA 从表中选择行
- c++ - 返回引用后将数组中的值(这是对象的属性)替换为垃圾
- objective-c - Objective-C 运行时中的类处理程序回调是什么?
- java - 第一次执行夜间模式代码,会触发当前重启
- flutter - 同时颤动底部和垂直导航选项卡
- javascript - 是否可以在设置/获取属性之前运行事件?
- android - 阻止recyclerview回收和重新绑定viewholder的正确方法
- javascript - 带对象的转换器,数组通过函数传递变量