在RTK(Redux Toolkit)中,可以使用createSlice
函数创建一个slice,slice是一个包含了reducer和action的集合。在RTK查询中,可以使用createAsyncThunk
函数创建一个异步的thunk action,用于处理数据的获取和状态的更新。
要重置RTK查询中突变的数据和状态,可以通过以下步骤实现:
reset
action,用于重置查询的数据和状态。可以使用createAction
函数创建该action,指定它的type为slice名称/reset
。reset
action。在reducer中,将查询的数据和状态重置为初始值。useDispatch
hook获取dispatch函数,并使用useSelector
hook获取查询的数据和状态。reset
action,以重置查询的数据和状态。以下是一个示例代码:
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
// 创建异步的thunk action
export const fetchData = createAsyncThunk(
'slice名称/fetchData',
async () => {
// 异步获取数据的逻辑
const response = await fetch('api地址');
const data = await response.json();
return data;
}
);
// 创建slice
const slice = createSlice({
name: 'slice名称',
initialState: {
data: null,
status: 'idle',
error: null,
},
reducers: {
reset: (state) => {
state.data = null;
state.status = 'idle';
state.error = null;
},
},
extraReducers: (builder) => {
builder
.addCase(fetchData.pending, (state) => {
state.status = 'loading';
})
.addCase(fetchData.fulfilled, (state, action) => {
state.status = 'succeeded';
state.data = action.payload;
})
.addCase(fetchData.rejected, (state, action) => {
state.status = 'failed';
state.error = action.error.message;
});
},
});
// 导出thunk action和reducer
export const { reset } = slice.actions;
export default slice.reducer;
在组件中使用该slice:
import { useDispatch, useSelector } from 'react-redux';
import { fetchData, reset } from './slice';
const Component = () => {
const dispatch = useDispatch();
const data = useSelector((state) => state.slice名称.data);
const status = useSelector((state) => state.slice名称.status);
const error = useSelector((state) => state.slice名称.error);
const handleFetchData = () => {
dispatch(fetchData());
};
const handleReset = () => {
dispatch(reset());
};
return (
<div>
{status === 'loading' && <div>Loading...</div>}
{status === 'succeeded' && <div>{data}</div>}
{status === 'failed' && <div>Error: {error}</div>}
<button onClick={handleFetchData}>Fetch Data</button>
<button onClick={handleReset}>Reset</button>
</div>
);
};
在上述示例中,reset
action用于重置查询的数据和状态。在reducer中,将data
、status
和error
重置为初始值。在组件中,可以通过调用dispatch(reset())
来分发reset
action,以重置查询的数据和状态。
请注意,上述示例中的代码是基于Redux Toolkit和React Redux的,如果你使用的是其他状态管理库或框架,可以根据相应的文档和API进行相应的调整。
领取专属 10元无门槛券
手把手带您无忧上云