Javascript 在redux中使用钩子分派操作时写入依赖项数组的正确方法

Javascript 在redux中使用钩子分派操作时写入依赖项数组的正确方法,javascript,reactjs,redux,react-hooks,Javascript,Reactjs,Redux,React Hooks,考虑以下代码段: import*作为来自“./actions”的操作 常量MyComponent=()=>{ const dispatch=usedpatch() 常量{myAction}=actions const handler=useCallback(()=>{ 分派(myAction()) },[dispatch,myAction]) 返回( ... ) } 但是,如果我这样修改代码而不使用破坏赋值: import*作为来自“./actions”的操作 常量MyComponent=()

考虑以下代码段:

import*作为来自“./actions”的操作
常量MyComponent=()=>{
const dispatch=usedpatch()
常量{myAction}=actions
const handler=useCallback(()=>{
分派(myAction())
},[dispatch,myAction])
返回(
...
)
}
但是,如果我这样修改代码而不使用破坏赋值:

import*作为来自“./actions”的操作
常量MyComponent=()=>{
const dispatch=usedpatch()
const handler=useCallback(()=>{
分派(actions.myAction())
}[快讯])
返回(
...
)
}
现在我不再需要将
actions.myAction
包含到依赖项数组中。如果我尝试在其中添加,eslint将提示一个警告,说明:

React-Hook useEffect具有不必要的依赖项:“actions.myAction”。排除它或删除依赖项数组


我不知道为什么会发生这种情况,我应该采取哪种方式?

之所以会发生这种情况,是因为在应用程序的整个生命周期中,操作将持有完全相同的引用。 因此,如ESLint警告中所述,将其包含在依赖项数组中是完全不必要的。的确如此

您可以继续使用以下备选方案之一:

一,


  • 之所以会发生这种情况,是因为在应用程序的整个生命周期中,操作将持有完全相同的引用。 因此,如ESLint警告中所述,将其包含在依赖项数组中是完全不必要的。的确如此

    您可以继续使用以下备选方案之一:

    一,

  • import actions from './actions';
    
    const handler = useCallback(() => {
        dispatch(actions.myAction())
    }, [dispatch])
    
    import { myAction } from './actions';
    
    const handler = useCallback(() => {
        dispatch(myAction())
    }, [dispatch]);