Javascript 如何在页面刷新时使用useSelector

Javascript 如何在页面刷新时使用useSelector,javascript,reactjs,redux,Javascript,Reactjs,Redux,在我的功能组件中有以下代码 const { id } = useParams(); const categories = useSelector((state) => { const allCategories = state.allCategories; return allCategories.filter(cat => cat.id === id); }); const [code, setCode] = useState(categories.le

在我的功能组件中有以下代码

const { id } = useParams();  
const categories = useSelector((state) => {
     const allCategories = state.allCategories;
     return allCategories.filter(cat => cat.id === id); 
}); 
const [code, setCode] = useState(categories.length === 1 ? categories[0].code : ''); 
但是,此代码只正确运行一次。如果我刷新页面,它就不工作了。请帮我解决这个问题。此外,如果这违反了最佳做法,请让我知道正确的做法。 实际用例是,有一个类别表,用户单击“编辑类别”,然后我导航到此组件以显示当前数据(即:类别代码)。由于category表已经有数据,所以填写allCategories


您可以使用诸如redux persist之类的工具将redux状态保存到本地存储或另一个存储系统

因为数据在程序的其他位置发生了更改,因此可以将其作为默认状态值使用。。。 而是使用
useffect()绑定该值


注意:每当
类别[0]发生更改时,代码都会设置为这样。
发生更改…

您能否详细说明刷新页面时不工作是什么意思?状态的
所有类别
部分在何处填充?我能看到出现此问题的唯一方法是导航到填写
allCategories
的路由/组件,然后转到此组件。但是,如果重新加载,它没有
allCategories
状态,因此无法工作。我猜
state.allCategories
是通过分派操作设置的,因此您应该分派该操作。如果它们是异步获取的,则应添加加载和错误元数据,以便显示异步操作的结果。@szczocik不工作表示类别代码未设置为“代码”状态variable@ljbc1994
allCategories
处于redux状态。它由后端API调用填充。实际用例是,有一个类别表,用户单击“编辑类别”,然后我导航到此组件以显示当前数据(即:类别代码)。由于category表已经有数据,
allCategories
已填充。页面刷新时redux状态是否会被破坏?非常感谢<代码>使用效果
修复了该问题
const { id } = useParams();  
const categories = useSelector((state) => {
     const allCategories = state.allCategories;
     return allCategories.filter(cat => cat.id === id); 
}); 
const [code, setCode] = useState(''); 
useEffect(()=>{
    if(categories.length === 1)
        setCode(categories[0].code)
},[categories.length&&categories[0].?code])