小编phr*_*hry的帖子

RTK 查询 createApi 结果:“类型‘Api<BaseQueryFn> 上不存在属性‘....’”

以下代码使用 RTK 查询创建 Redux Hook:

export const specialtiesApi = createApi({
    reducerPath: 'specialtiesApi',
    baseQuery: fetchBaseQuery({ baseUrl: 'https://someplace.com/' }),
    endpoints: (builder) => ({
        getSpecialties: builder.query({
            query: (name) => `specialties`,
        }),
    }),
});

export const { useGetSpecialtiesQuery } = specialtiesApi;
Run Code Online (Sandbox Code Playgroud)

最后一行代码抛出 Typescript 编译时错误:

Property 'useGetSpecialtiesQuery' does not exist on type 'Api<BaseQueryFn<string | FetchArgs, unknown, FetchBaseQueryError, {}, FetchBaseQueryMeta>, { getSpecialties: QueryDefinition<...>; }, "specialtiesApi", never, unique symbol>'
Run Code Online (Sandbox Code Playgroud)

我的代码改编自https://redux-toolkit.js.org/rtk-query/usage-with-typescript使用 Typescript 4.3.5。

我看不出有什么问题。有任何想法吗?

typescript react-redux redux-toolkit rtk-query

22
推荐指数
1
解决办法
2万
查看次数

RTK 查询使用 getState() 从另一个切片获取状态

我昨天刚开始使用 redux,在阅读了不同的库后,我决定使用 RTK 的切片路线。

对于我的异步,我决定使用 RTK 查询,而不是使用 createAsyncThunk,并且我有一个关于从另一个切片访问状态的正确方法的问题。

slice1 包含一些用户数据,例如:

export const initialState: IUserState = {
   name: 'example',
   id: null,
};
Run Code Online (Sandbox Code Playgroud)

在我的 slice2 中,我有一个函数想要执行getSomethingByUserId(id)和我当前的实现之类的操作:

interface IApiResponse {
  success: true;
  result: IGotSomethingData[];
}

const getsomethingSlice: any = createApi({
  reducerPath: 'api',
  baseQuery: fetchBaseQuery({
    baseUrl: 'https://someapibase',
  }),
  endpoints(builder) {
    return {
      fetchAccountAssetsById: builder.query<IApiResponse, null>({
        query() {
          console.log('store can be called here', store.getState().user.id);
          return `/apipath?id=${store.getState().user.id}`;
        },
      }),
    };
  },
});

export default getsomethingSlice;
export const { useFetchAccountAssetsByIdQuery } = getsomethingSlice;
Run Code Online (Sandbox Code Playgroud)

正如我在某处读到的,markikson 提到导入 …

reactjs redux redux-thunk redux-toolkit rtk-query

21
推荐指数
1
解决办法
2万
查看次数

RTK 查询“use*Query”使用缓存的 isLoading 和数据,即使对于不同的参数

我是 RTK 查询的新手,在使用不同参数的查询之间共享数据时遇到问题。

// api.js
const { useGetStuffQuery } = api.injectEndpoints({
  endpoints: (builder) => ({
    getStuff: builder.query({
      query: (stuffId) => ({ url: `http://some.random-url.com/${stuffId}` }),
    }),
  }),
});

// component.js
function(props) {
  const [id, setId] = useState(1);
  const { data, isLoading } = useGetStuffQuery(id);

  if (val === '2') {
    console.log('datttt', data); // this initially prints data from id:1
  }

  return <div>
      <input value={id} onChange={(e) => setId(e.target.value)} />
      {
        isLoading ? <span>loading...</span>
                  : <span>data is: {data}</span>
      }

  </div>
}
Run Code Online (Sandbox Code Playgroud)

当我将 id 从 …

redux redux-toolkit rtk-query

11
推荐指数
1
解决办法
1万
查看次数

如何实现rtk的createApi查询去抖

有人可以帮助我使用 creatApi 和 redux 工具包中的查询实现来实现去抖功能。

提前致谢。

reactjs redux redux-toolkit rtk-query

6
推荐指数
1
解决办法
9253
查看次数

当我将 RTK 查询与 redux-persist 结合使用时会发生什么?

当我将 Redux Toolkit Query 与 redux-persist 结合使用时会发生什么?

它会使用持久状态还是会重新获取状态?

redux redux-persist redux-toolkit rtk-query

5
推荐指数
2
解决办法
9155
查看次数

Redux Toolkit 查询:减少“突变”响应的状态

假设我有一个 RESTish API 来管理“帖子”。

  • GET /posts返回所有帖子
  • PATCH /posts:id更新帖子并回复新记录数据

我可以通过如下方式使用 RTK 查询来实现此目的:

const TAG_TYPE = 'POST';

// Define a service using a base URL and expected endpoints
export const postsApi = createApi({
  reducerPath: 'postsApi',
  tagTypes: [TAG_TYPE],
  baseQuery,
  endpoints: (builder) => ({
    getPosts: builder.query<Form[], string>({
      query: () => `/posts`,
      providesTags: (result) =>
        [
          { type: TAG_TYPE, id: 'LIST' },
        ],
    }),
    updatePost: builder.mutation<any, { formId: string; formData: any }>({
      // note: an optional `queryFn` may be used in place of …
Run Code Online (Sandbox Code Playgroud)

redux-toolkit rtk-query

5
推荐指数
1
解决办法
3792
查看次数

如何使用 REDUX/RTK 查询删除项目后刷新页面?

我正在使用 RTK 查询从我的 api 获取数据,如下所示

    export const coinApi = createApi({
  reducerPath: 'coinApi',
  baseQuery: fetchBaseQuery({ baseUrl }),
  endpoints: (builder) => ({
    getCoins: builder.query({
      query: () => createRequest(`/watchlist`),
    })

  }),
});
Run Code Online (Sandbox Code Playgroud)

我像这样从我的桌子上删除一枚硬币

export const deleteCoin = (id) => async (dispatch, getState) => {


try {
    dispatch({
      type: COIN_DELETE_REQUEST,
    });

    await axios.delete(`/api/coins/watchlist/${id}`);

    dispatch({
      type: COIN_DELETE_SUCCESS,
    });
  } catch (error) {
    const message =
      error.response && error.response.data.message
        ? error.response.data.message
        : error.message;
    dispatch({
      type: COIN_DELETE_FAIL,
      payload: message,
    });
  }
};
Run Code Online (Sandbox Code Playgroud)

在我的前端组件中:我正在调用dispatch(deleteCoin(id));

删除功能正在运行,因为在我的数据库中它已被删除,但组件不会刷新,因此硬币仍然存在于 UI 上,除非我自己手动刷新页面。

我尝试从 …

reactjs redux rtk-query

5
推荐指数
1
解决办法
7218
查看次数

无法读取未定义的属性“providesTags”

我正在使用 RTK 查询通过 api 通过“useGetUserQuery”获取一条记录

Api 调用可以,因为后端有结果。我使用sequelize 并将结果发送数据对象。我尝试删除提供标签,但我遇到了同样的问题。

我的前端返回此错误:

rtk-query.esm.js:771 Uncaught (in promise) TypeError: Cannot read property 'providesTags' of undefined
at calculateProvidedByThunk (rtk-query.esm.js:771)
at rtk-query.esm.js:908
at redux-toolkit.esm.js:603
at produce (immer.esm.js:1)
at redux-toolkit.esm.js:602
at Array.reduce (<anonymous>)
at redux-toolkit.esm.js:581
at combination (redux.js:528)
at reducer (rtk-query.esm.js:992)
at combination (redux.js:528)
at computeNextEntry (<anonymous>:3395:21)
at recomputeStates (<anonymous>:3429:17)
at <anonymous>:3809:22
at Object.dispatch (redux.js:288)
at dispatch (<anonymous>:3856:17)
at rtk-query.esm.js:1326
...
at rtk-query.esm.js:1418
at redux-toolkit.esm.js:386
at index.js:11
at redux-toolkit.esm.js:314
at dispatch (redux.js:659)
at redux-toolkit.esm.js:1144
at step (redux-toolkit.esm.js:38)
at …
Run Code Online (Sandbox Code Playgroud)

javascript redux redux-toolkit rtk-query

1
推荐指数
1
解决办法
5605
查看次数