javascript - 对象为空时如何阻止useSelector触发?
问题描述
我正在制作一个包含嵌套对象的简单 Web 应用程序,我注意到当我删除包含部分对象的成员对象时,我收到一个错误,因为 useSelectors 正在寻找成员。
我的问题是如何制作一个动态的 useSelector,当它正在寻找的对象或其嵌套的对象为空或对象被删除时,它将停止触发。
const selectedTool = useSelector(state => state.dashboard.selectedTool)
const i = parseFloat(selectedTool)
const members = useSelector(state => state.dashboard.sheets[i].members)
const selectedMember = useSelector(state => state.dashboard.selectedMember)
const sections = useSelector(state => state.dashboard.sheets[i].members[selectedMember].sections)
这就是成员对象以及嵌套部分对象的样子。
members: {
0: {
memberId: '',
materialId: '',
sectionId: '',
totalLengthOfMember: '',
yAxisUnbracedLength: '',
yAxisEffectiveLengthFactor: '',
zAxisUnbracedLength: '',
zAxisEffectiveLengthFactor: '',
unbracedLengthLateralTorsional: '',
lateralTorsionalModificationFactor: '',
slendernessRatioInCompression: '',
slendernessRatioInTension: '',
sections: {
0: {
sectionId: '',
sectionShape: '',
sectionName: '',
sectionView: '',
sectionEdit: ''
}
}
}
},
我的目标是允许用户删除成员对象。但是,当用户这样做时,useSelector 部分会给出错误,因为它找不到成员索引。
我该如何解决?感谢你们!
解决方案
解决方案很简单,如果没有成员,请不要渲染使用该选择器的组件。
您的回复很可能是,“但所有这些useSelector
都在同一个组件中”
我将回答:
您的组件太大,只需制作更小的、单一职责的组件,然后将useSelector
's 拆分。
发布您的组件代码。
推荐阅读
- c# - 向现有列添加索引
- javascript - 如何从 DOM 元素创建 JS 对象并添加自定义函数?
- r - R 中的非线性看似不相关的回归 (SUR) 施加限制
- amazon-web-services - 无法找到 awscam 包
- apache-spark - 如何在 Spark Structure Streaming 中使用 JSON 数据而不是 JSON 路径
- excel - 如何在 Powerpoint 中使用 VBA 调整第二张图片的大小?
- sql-server - Excel - 生成 INSERT 语句并处理单引号
- java - Runnable实现中的全局变量值线程安全吗?
- apache - 阿帕奇2:
不适用于重写替换 - reactjs - react js重定向到应用程序中的另一个url