我正在使用这样的 RTK Query 从我的 api 获取数据
export const coinApi = createApi({
reducerPath: 'coinApi',
baseQuery: fetchBaseQuery({ baseUrl }),
endpoints: (builder) => ({
getCoins: builder.query({
query: () => createRequest(`/watchlist`),
})
}),
});
我像这样从我的桌子上删除一枚硬币
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,
});
}
};
在我的前端组件中:我正在调用 dispatch(deleteCoin(id));
删除功能正在工作,因为在我的数据库中它被删除了,但是组件没有刷新,所以硬币仍然存在于 UI 上,除非我自己手动刷新页面。
我尝试从 RTK 查询访问全局数据,但无法成功我试图使用 useEffect 并从
const { 数据,isFetching } = useGetCoinsQuery();
但是它仍然没有重新加载我的组件?我还能如何重新加载我的组件?这是我第一次使用 RTK Query,所以我不确定如何真正访问该数据以及它如何监听 API 服务器中的数据变化?谢谢
const coins = useSelector((state) => state.coinApi.queries)
const {
loading: loadingDelete,
error: errorDelete,
success: successDelete,
} = coinDelete;
useEffect(() => {}, [dispatch, successDelete, data]);
if (isFetching) return <Loader></Loader>;
const deleteHandler = (id) => {
if (window.confirm('Are you sure?')) {
dispatch(deleteCoin(id));
}
};