我正在使用带有@reduxjs/TOOLKIT 1.9.1的REACTION 18.

在表单提交时,使用RTKMutations 触发POST API,并在组件中使用响应.页面导航成功.判断下面的代码.

const formSubmit = async (data) => {
  const payload = {
    ...
  };

  try {
    const response = await artistSearch(payload);

    if (response) {
      navigate("/artist-search-results", { state: { data } });
    }
  } catch (artistError) {
    ...
  }
};  

使用相关接口

export const artistApi = createApi({
  reducerPath: "artistApi",
  baseQuery: fetchBaseQuery({
    baseUrl: `...`,
    headers: { ... },
  }),
  endpoints: (builder) => ({
    getArtist: builder.query({
      query: (uid) => `/getProfile/${uid}`,
    }),
    artistSearch: builder.mutation({
      query: (formData) => ({
        url: "ArtistListSearch",
        method: "POST",
        body: formData,
      }),
    }),
  }),
});

export const { useGetArtistQuery, useArtistSearchMutation } = artistApi;

现在,我无法在组件中使用artistSearch个Mutations 响应数据,该组件仅在页面导航到的位置呈现. IOW,我也想在其他组件中使用artistSearch个Mutations 响应数据.

我试过通过以下代码,但在控制台中未定义.

const [
  artistSearch,
  {
    data: artistSearchResponse,
    error: artistError,
    isLoading: isArtistLoading
  }
] = useArtistSearchMutation();
console.log("artist search data is:", artistSearchResponse);

推荐答案

您可以对Mutations 使用特定的缓存键,以便使用相同Mutations 的其他组件可以访问相同的缓存结果.

useMutation:fixedCacheKey

type UseMutationStateOptions = {
  // A method to determine the contents of `UseMutationResult`
  selectFromResult?: (result: UseMutationStateDefaultResult) => any
  // A string used to enable shared results across hook instances which have the same key
  fixedCacheKey?: string
}

示例:

const [artistSearch] = useArtistSearchMutation({
  fixedCacheKey: "artistSearch",
});

const formSubmit = async (data) => {
  const payload = {
    ...
  };

  try {
    const response = await artistSearch(payload).unwrap();

    if (response) {
      navigate("/artist-search-results", { state: { data } });
    }
  } catch (artistError) {
    ...
  }
};  
const [
  artistSearch,
  {
    data: artistSearchResponse, // should be same cached data from above
    error: artistError,
    isLoading: isArtistLoading
  }
] = useArtistSearchMutation({
  fixedCacheKey: "artistSearch",
});

Javascript相关问答推荐

JS生成具有给定数字和幻灯片计数的数组子集

一次仅播放一个音频

Google Apps脚本中的discord邀请API响应的日期解析问题

更改JSON中使用AJAX返回的图像的路径

使用LocaleCompare()进行排序时,首先使用大写字母

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

WP Bootstrap NavWaker:下拉菜单一次打开所有下拉菜单

当从其他文件创建类实例时,为什么工作线程不工作?

如何在一个对象Java脚本中获取不同键的重复值?

如何修复使用axios运行TSC index.ts时出现的错误?

ReferenceError:无法在初始化之前访问setData

AG-GRIDreact 显示布尔值而不是复选框

从异步操作返回对象

Firebase函数中的FireStore WHERE子句无法执行

AstroJS混合模式服务器终结点返回404

在点击链接后重定向至url之前暂停

material UI自动完成全宽

Reaction路由v6.4+数据API:重试加载程序而不显示错误

与find()方法一起使用时,Mongoose中的$or运算符没有提供所有必需的数据