1

到目前为止,我已经迁移到 RTK 并非常享受它,但我坚持的一件事是以下情况:

我们有(为了简单起见)两个端点:

该网站本身托管在另一个域上。

我需要从客户端点获取数据,但为了更新某些内容,我需要对订单端点进行突变。起初我以为我应该为每个基本 URL 定义一个 createApi,但后来我很确定我不能让无效。我想让这个先前的突变使客户的数据无效,以便重新获取新数据。

所以这就是我想出的,但如果这是前进的方式,我想提出一些意见。

export const customerApi = createApi({
  reducerPath: "/../",
  baseQuery: fetchBaseQuery({ baseUrl: "https://www.domain-customer.com/" }),
  endpoints: (builder) => ({
// write provides tag stuff here
    getCustomerExample: builder.query({ query: (name) => `customer/${name}` }),
// please ignore the details of the mutation, I haven't practiced much with it yet.
    updateCustomer: builder.mutation({
      queryFn: async (name) => {
        const response = await fetch(
          `https://www.domain-order.com/updateCustomer`,
           {update mutation stuff here}
        );
        const data = await response.json();

        return { data };
      }
// write invalidate stuff here
    })
  })
});

这是解决问题的方法吗?或者甚至应该有一个巨大的 createAPI 来保存所有的突变和查询?

4

1 回答 1

3

createApi一般来说,是的,如果数据连接得足够多以至于您想要使它们无效,您应该拥有一个。

请注意,虽然大多数示例仅显示对 . 下的某些内容的查询baseQuery,但您也可以只返回一个包含完整域的url参数(或字符串) - 100% 支持该用例。queryfetchBaseQuery

所以在你的情况下:

updateCustomer: builder.mutation({
      query: (name) => ({
        url: `https://www.domain-order.com/updateCustomer`,
        // update mutation stuff here
      })
      // write invalidate stuff here
    })
于 2021-10-08T10:57:22.800 回答