如何在 redux-toolkit 中输入 updateQueryData

Ras*_*mon 7 typescript redux-toolkit

我已经在 redux-toolkit 中成功实现了乐观更新。但我无法正确输入。我的代码类似于 redux-toolkit 的示例。

const postsApiSlice = api.injectEndpoints({
  endpoints: (builder) => ({
    getPost: builder.query<Post, number>({
      query: (id) => ROUTES.POST(id),
      providesTags: (result, error, id) => {
        return [{ type: POST_TAG, id }]
      },
    }),
    updatePostWithOptimism: builder.mutation<void, Pick<Post, 'id'> & Partial<Post>>({
      query: ({ id, ...patch }) => ({
        url: ROUTES.POST(id),
        method: 'PATCH',
        body: patch,
      }),
      async onQueryStarted({ id, ...patch }, { dispatch, queryFulfilled }) {
        // ERROR at 'getPost': Argument of type 'string' is not assignable to parameter of type 'never'.ts(2345)
        const manualGetPostUpdate = dispatch(api.util.updateQueryData('getPost', id, (draft) => {
          Object.assign(draft, patch)
        }))
        try {
          await queryFulfilled
        } catch {
          manualGetPostUpdate.undo()
        }
      },
    }),
  }),
})

Run Code Online (Sandbox Code Playgroud)

phr*_*hry 18

的类型api不知道端点getPost。使用注入的 api ( postsApiSlice.util.updateQueryData) 代替。

另外,旁注:您的 api 命名有点表明(我可能是错的)您正在将“注入”api 添加到调用中,configureStore因为它是自己的切片。您不需要这样做 - 只需添加apiconfigureStore足够了。