【问题标题】:React Hooks : fetch data inside useEffect warningReact Hooks:在useEffect警告中获取数据
【发布时间】:2023-03-08 20:38:01
【问题描述】:

我正在使用 react Hooks useEffect 从组件中的 API 获取数据

props.getUserInfoAction() is an Action from redux dispatching user info 

示例

useEffect(() => {
        props.getUserInfoAction();
      }, []);

效果很好,我可以获取我的数据,但我发现我的控制台中显示了 warning

React Hook useEffect 缺少一个依赖项:'props'。要么包括 它或删除依赖数组。但是,“道具”会改变 any 道具发生变化,因此首选的解决方法是在 useEffect 调用之外解构“道具”对象并引用那些特定的道具 内部 useEffect react-hooks/exhaustive-deps

我尝试在数组中传递 props,但这样做我得到了 API 调用的无限循环。

useEffect(() => {
            props.getUserInfoAction();
          }, [props]); 

【问题讨论】:

  • 作为[] 空数组的第二个参数用于在组件第一次挂载和卸载时运行useEffect。这真的是你想要的吗?

标签: javascript reactjs redux react-hooks


【解决方案1】:

如果props.getUserInfoAction() 是您应该执行的操作,而不是已经通过调度接收(我假设来自connect),请执行以下操作:

import {getuserInfoAction} from './actionCreators'
import {useDispatch} from 'react-redux'

const Comp = () =>{
    const dispatch = useDispatch()

    useEffect(() =>{
        dispatch(getUserInfoAction())
    },[dispatch])
}

因为即使你这样做:

const {action} = props

函数在渲染调用之间总是会发生变化。

【讨论】:

  • 是的,我正在这样做from connect,但我不想删除它,这是代码结构的问题,因为我正在为我的所有组件这样做谢谢
  • 我正在使用 redux-thunk 来调度动作,所以在组件内部使用 useDispatch 不会调度两次,因为在 getuserInfoAction 内部我已经在调度数据了?
  • useDispatch 将一个记忆值返回给dispatch 方法,因此它不会在渲染调用之间改变
猜你喜欢
  • 2019-11-26
  • 2020-06-22
  • 2020-02-21
  • 2020-03-23
  • 1970-01-01
  • 2020-05-01
  • 2020-09-28
  • 2021-04-15
  • 2020-01-18
相关资源
最近更新 更多