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]);