reactjs - React useEffect Hook 抱怨缺少依赖
问题描述
我有两个相互通信的组件。在组件 AI 中,有一个位置列表,每当用户单击此组件中的某个位置时,它都会根据单击的位置过滤组件 B 中的属性列表。这行得通,到目前为止一切顺利。但是在组件 BI 中,使用 useEffect 挂钩来检查通过组件 A 的 props 获得的 selectedLocation 变量,以便我可以更新状态。在这个 useEffect() 调用中,VS Code 抱怨说“React useEffect Hook 缺少依赖项”...dataState”。但是我当然不能将 dataState 放入依赖项数组中,因为它会导致无限循环。并且顺便说一句,dateState 是通过 useState Hook 管理的。这是我的 useEffect 钩子:
// If there is a new selected location from the treeview, update the grid state
useEffect(() => {
const newState: State = {
...dataState,
filter: {
logic: 'and',
filters: [
{
field: 'location',
operator: 'contains',
value: selectedLocation,
},
],
},
};
setDataState(newState);
}, [selectedLocation]);
任何帮助,将不胜感激。
解决方案
尝试这样设置dataState
:
useEffect(() => {
setDataState(oldDataState => ({
...oldDataState ,
filter: {
logic: 'and',
filters: [
{
field: 'location',
operator: 'contains',
value: selectedLocation,
},
],
},
}));
}, [selectedLocation]);
这样,它将被视为一个parameter
而不是依赖项。
推荐阅读
- typescript - 为什么 Typescript 代码是(或不是)循环依赖?
- google-kubernetes-engine - Istio 虚拟服务 uri 匹配不起作用
- c - 使用 C 在连接 N 中检查对角线获胜者
- python - Python,如何比较不同的文件
- python-3.x - 从 imaplib 电子邮件中解析数据
- angular - angular8 es5子调用父方法调用this.method未定义
- python - 配置代理详细信息以连接到雪花
- python - 有麻烦的储蓄链接到带有硒的列表变量
- c++ - Microsoft Visual Studio Community 2019:致命错误 C1083:无法打开包含文件:'corecrt.h':没有这样的文件或目录
- node.js - 如何防止打字稿抱怨属性可以未定义