Reactjs ReduxToolkit:如何将存储更改同步到本地状态?
在我的组件中,我从API加载初始数据,如下所示:Reactjs ReduxToolkit:如何将存储更改同步到本地状态?,reactjs,redux,redux-toolkit,Reactjs,Redux,Redux Toolkit,在我的组件中,我从API加载初始数据,如下所示: const dispatch = useDispatch(); const groups = useSelector(selectGroups); const [localGroupState, setLocalGroupsState] = useState(groups); useEffect(() => { dispatch(loadAsync()); }, []); expo
const dispatch = useDispatch();
const groups = useSelector(selectGroups);
const [localGroupState, setLocalGroupsState] = useState(groups);
useEffect(() => {
dispatch(loadAsync());
}, []);
export const loadAsync=():AppThunk=>dispatch=>{
调度(加载());
get('/data',{headers:{'Authorization':`Bearer${getToken()}`})
.然后((axiosResponse:axiosResponse)=>{
调度(已加载(axiosResponse.data));
console.log(“一切正常”)
})
.catch(()=>{
console.error(“不好”)
});
};
但是localGroupState
为空,而groups
为空。
我觉得我错过了一个简单的技巧。
非常感谢您的帮助。如果您想对组进行排序和筛选,那么您的本地状态应该是那些排序和筛选条件。已排序和筛选的组应为计算值,而不是状态
const dispatch = useDispatch();
const groups = useSelector(selectGroups);
const [sort, setSort] = useState('ascending');
const [filter, setFilter] = useState('something');
const sortedGroups = [...groups].sort(
// replace this with whatever your sorting logic is
sort === 'ascending' ? (a, b) => a - b : (a, b) => b - a
).filter(() => /* some filtering code */);
useEffect(() => {
dispatch(loadAsync());
}, []);
出于性能原因,您可能希望记忆排序和筛选,以便仅当组
、排序
、或过滤器
更改时,才会重新运行排序和筛选:
const sortedGroups = useMemo(() => {
return [...groups].sort(
// replace this with whatever your sorting logic is
sort === 'ascending' ? (a, b) => a - b : (a, b) => b - a
).filter(() => /* some filtering code */);
}, [groups, sort, filter]);
若要对组进行排序和筛选,则本地状态应为这些排序和筛选条件。已排序和筛选的组应为计算值,而不是状态
const dispatch = useDispatch();
const groups = useSelector(selectGroups);
const [sort, setSort] = useState('ascending');
const [filter, setFilter] = useState('something');
const sortedGroups = [...groups].sort(
// replace this with whatever your sorting logic is
sort === 'ascending' ? (a, b) => a - b : (a, b) => b - a
).filter(() => /* some filtering code */);
useEffect(() => {
dispatch(loadAsync());
}, []);
出于性能原因,您可能希望记忆排序和筛选,以便仅当组
、排序
、或过滤器
更改时,才会重新运行排序和筛选:
const sortedGroups = useMemo(() => {
return [...groups].sort(
// replace this with whatever your sorting logic is
sort === 'ascending' ? (a, b) => a - b : (a, b) => b - a
).filter(() => /* some filtering code */);
}, [groups, sort, filter]);
您拥有
localGroupState
的原因是什么?你能不能在你的组件中使用groups
?@NicholasTower我希望存储反映所有数据,但我希望localGroupState
只能在组件中进行筛选和搜索。请显示生成最小示例所需的所有信息,如显示selectGroups
selector,你的初始状态等等on@DennisVash更新您拥有localGroupState
的原因是什么?你能不能在你的组件中使用groups
?@NicholasTower我希望存储反映所有数据,但我希望localGroupState
只能在组件中进行筛选和搜索。请显示生成最小示例所需的所有信息,如显示selectGroups
selector,你的初始状态等等on@DennisVash更新