javascript - 如何在页面刷新时使用 useSelector
问题描述
我的功能组件中有以下代码。
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 : '');
但是,此代码仅正确运行一次。然后,如果我刷新页面,它就不起作用。请帮我解决这个问题。另外,如果这违反了最佳实践,请告诉我正确的方法。实际用例是,有一个类别表,用户单击“编辑类别”,然后我导航到该组件以显示当前数据(即:类别代码)。由于类别表已经有数据,所以填充了 allCategories
解决方案
因为数据在程序的其他地方发生了更改,所以将其用作默认状态值是有问题的......而不是将值与useEffect()
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])
categories[0].code
注意:无论何时更改,代码都会像这样设置...
推荐阅读
- sql - 每年按年分组,年+9,得到计数的总和
- rxjs - 当您无法控制发布者时,是否可以/建议使用反应式编程
- jquery - 提交动态生成的按钮
- c# - 我可以在同一接口的多个实现上“隐式”调用方法吗?
- java - Optaplanner VRPTW“验证该 sourceVariableName 变量的输入问题的一致性”
- android - Flutter:如何修复多行启用文本字段底部的 SuffixIcon?
- azure-web-app-service - 从 ASP.NET CORE WEB API 向应用程序洞察添加请求
- javascript - 如何立即更新子组件中的父状态
- salesforce - 无法在 SFCC Demandware 中保存用户选择的选项列表值
- c++ - 在 Linux 上将正在运行的应用程序中的共享对象热更新到新版本