ミドルウェアでこれを行うことは避けるべきだと思います。すでに翻訳されたメッセージでアクションをディスパッチできます。
const deleteUser = (id, messages) => {
type: DELETE_USER,
payload: {id, messages}
}
次に、サガ (または他のミドルウェア) で、この既に翻訳されたメッセージを使用できます。
function* deleteUserWatcher({
payload: { id, messages }
}) {
try {
yield request.delete(`/user/${id}`);
yield put(deleteUserSuccess(id));
yield put(pushNotificationToStack(message.success));
} catch (error) {
yield put(pushNotificationToStack(message.error));
}
}
次に、コンポーネントでアクションをディスパッチできます
const dispatch = useDispatch();
const { formatMessage } = useIntl();
const handleDeleteUser = id => {
dispatch(deleteUser(id, {
success: formatMessage({
id: "User.delete.success",
defaultMessage: "User has been deleted"
}),
error: formatMessage({
id: "User.delete.error",
defaultMessage: "Ups. Something went wrong. Sorry :("
}),
}
));
}
これがすべての状況に適しているわけではないことはわかっていますが、このアプローチでほとんどのケースをカバーできます