React Hooks:在 useEffect 警告中获取数据

IT技术 javascript reactjs redux react-hooks
2021-05-06 01:01:01

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

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

例子

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

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

React Hook useEffect 缺少依赖项:'props'。包括它或删除依赖项数组。然而,'props' 会在任何props改变时 改变,所以首选的解决方法是在 useEffect 调用之外解构 'props' 对象,并在 useEffect react-hooks/exhaustive-deps 中引用那些特定的 props

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

useEffect(() => {
            props.getUserInfoAction();
          }, [props]); 
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

函数将始终在渲染调用之间发生变化。