React Hooks:在useEffect中获取数据

G.a*_*ziz 2 javascript reactjs redux react-hooks

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

props.getUserInfoAction() is an Action from redux dispatching user info 
Run Code Online (Sandbox Code Playgroud)

useEffect(() => {
        props.getUserInfoAction();
      }, []);
Run Code Online (Sandbox Code Playgroud)

一切都很好,我可以获取我的数据,但是我发现warning我的控制台中出现了

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

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

useEffect(() => {
            props.getUserInfoAction();
          }, [props]); 
Run Code Online (Sandbox Code Playgroud)

Dup*_*cas 5

如果props.getUserInfoAction()是一个动作,则应该connect这样做(而不是从我的假设中)已经收到:

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

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

    useEffect(() =>{
        dispatch(getUserInfoAction())
    },[dispatch])
}
Run Code Online (Sandbox Code Playgroud)

因为即使您这样做:

const {action} = props
Run Code Online (Sandbox Code Playgroud)

函数将始终在渲染调用之间更改。

  • useDispatch将记忆值返回给`dispatch`方法,因此在渲染调用之间不会改变 (3认同)