问题标签 [use-effect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - 一般来说,在单个组件中使用一个或多个 useEffect 挂钩更好吗?
我有一些副作用要应用到我的反应组件中,并且想知道如何组织它们:
- 作为单一的使用效果
- 或几个 useEffects
在性能和架构方面哪个更好?
reactjs - React hooks exhaustive-deps 规则也需要 useEffect 数组中的函数
所以我有以下效果
disabled
如果prop 发生变化,这只是将按钮设置为启用或禁用状态。
我还在我的 eslint 配置中添加了以下规则
现在我收到一个警告,setAnimatedValue
需要useEffect
与 prop 一起添加到我的数组中disabled
,但它只是一个既不是状态也不是 prop 的函数,所以据我所知,它不应该真正进入那里。
有没有办法让这条规则只在我遗漏state
或prop
有价值时才发出警告?
reactjs - 使用 react useEffect 钩子和 Redux 加载微调器并且没有 useState 钩子
我的组件需要一个加载微调器。我正在使用反应钩子useEffect
,因为我正在使用redux
,所以我不能useState
在这个组件中使用。
这是我到目前为止所得到的,它没有按预期工作。
注意:我试过useRef
了,我没有得到答案。
注意:我可以使用类组件来实现解决方案,如下所示。跟随isLoading
。
但我的问题是重写整个事情有useEffect()
和没有 useState()
reactjs - 如何修复 useEffect 钩子抛出的“未捕获的 TypeError:回调不是函数”
我对 useEffect 挂钩有疑问。在下面的代码中,第一个效果会触发一个初始化 firebase 的 redux 操作,如果有用户登录,它会将其数据放入 redux 存储中。这会触发组件中的更新,第二个效果尝试重新运行,我得到控制台日志,但也得到“回调不是函数”错误。之后,initFinished 属性设置为 true,所以效果会再次触发,这次我得到的只是错误。
我尝试从效果的依赖数组中添加/删除 deps。我总是得到同样的行为。即使效果中的唯一代码是 console.log,行为也保持不变。效果第一次运行,第二次出错。
组件代码
依赖项:
reactjs - 在此错误消息中“直接在 useEffect 中移动此变量”是什么意思?
我试图通过道具将对象传递给子组件。该值在 useEffect 挂钩中设置,并在传递给我的子组件时丢失。
我尝试在单独的函数中设置 useEffect 挂钩之外的对象的值,但该值仍然丢失。
我希望 props.users 是 { user: 'bob' } 而不是空对象 {}。
错误信息是:
“每次渲染后,从 React Hook useEffect 中分配给 'users' 变量的赋值都会丢失。要随着时间的推移保留该值,请将其存储在 useRef Hook 中并将可变值保留在 '.current' 属性中。否则,您可以将此变量直接移动到 useEffect react-hooks/exhaustive-deps"
javascript - 在 useEffect 挂钩中使用 redux 动作创建器
我想用来useEffect
触发 2 个函数(它们是 redux 操作创建者) - 一个函数在组件安装时,另一个在卸载时,如下所示:
它可以工作,但是react-hooks/exhaustive-deps
eslint 规则告诉我我useEffect
有 2 个依赖项,我应该将它们包含到依赖项数组中(useEffect 的第二个参数)或完全删除数组。第二个选项不合适,因为我不需要在每次渲染时调用这些函数。因此,我需要将它们都包括在内。有一篇关于将函数包含到依赖数组中的文章。那里描述的事情对我来说非常清楚,但我仍然对依赖数组中的 redux 动作创建者以及 react 如何对这些函数进行浅显的比较感到困惑。对我来说,这有点难以理解。解决这种特殊情况的正确方法是什么? 一般而言,在 useEffect 中使用 redux 动作创建者的正确方法是什么?
reactjs - Reactjs 为什么 useEffect 有时会在每个挂载/渲染上运行而不是首先运行
我在 App.js 的路线中有一个 useEffect
在同一个文件(App.js)中,我们有这样的组件(使用 react-localize-redux):
问题是我单击的每个链接都会运行 setActiveLanguage,即使我[]
让它只在第一次渲染时运行(因为这是我唯一关心从 URL 设置语言的时间)我在应用程序的其他部分也遇到了这个问题。据我了解,useEffect 不应该在每次安装组件时都运行,除非它的依赖项发生变化,但似乎我错过了一个细节。
reactjs - 不使用 useEffect Hook 来获取 API 是错误的吗?
我一直在这样做,但一些大学告诉我应该使用useEffect
Hook。问题是我没有看到这种方法的好处,我认为我的方法更干净。
根据回复编辑:
我将代码更改为重新渲染,如下所示:
在控制台中我得到:
called from UseEffectlessComponent
called from UseEffectComponent
called from UseEffectlessComponent
called from UseEffectlessComponent
called from UseEffectlessComponent
所以,我终于发现了这种方法的好处。我有一些代码要更改...非常感谢您的回答!
reactjs - React - useEffect hook - componentDidMount to useEffect
我想把它转换成一个useEffect
钩子:
代码
更新代码
现在它给了我一个useState cannot be used in a callback
.
我该如何解决这个问题或正确转换它?
reactjs - 使用反应钩子时无法读取未定义的属性
我收到错误“无法读取未定义的属性 'map'”,但无法找出原因 - map 无法工作,因为 'movies' 未定义。你能看出我做错了什么吗?非常感谢。