JN *_*aju 5 reactjs react-hooks
第一种情况:
_假设我有一个处于 redux 状态或父状态的 prop。
_我不希望在此道具更改时触发 useEffect,
_但我确实需要在 useEffect 中使用该道具。
_React 警告我将道具添加到依赖项数组,但如果我这样做,那么 useEffect 将再次触发。
第二种情况:_
我在一个useEffect中使用了一个函数,_但
该函数在其他地方也需要。
_不想重复功能代码。
_React 希望我将该函数添加到依赖项数组,但我不希望每次函数引用更改时都触发 useEffect。
小智 4
在使用 useEffect 时,您应该考虑闭包。如果在 useEffect 中使用了任何 props 或局部变量,那么建议将其包含在依赖项数组中,否则由于闭包,您将使用过时的数据。
在这里我介绍一个用例。在 ComponentUsingRef 内部,我们使用 ref 作为容器。您可以在https://reactjs.org/docs/hooks-reference.html#useref找到更多相关信息
这种方法的优点是您不必在父组件中记住 fn 。您将始终使用函数的最新值,在给定的情况下,它甚至不会导致 useEffect 的触发,因为它不会依赖于您的依赖项
const Component=({fn})=>{
useEffect(()=>{
fn()
},[fn])
.....
.....
return <SomeComponent {...newProps}/>
}
const ComponentUsingRef=({fn}){
const fnRef = useRef(fn)
fnRef.current = fn // so that our ref container contains the latest value
useEffect(()=>{
fn.current()
},[ ])
.....
.....
return <SomeComponent {...newProps}/>
}
Run Code Online (Sandbox Code Playgroud)
如果您想使用抽象,那么您应该将逻辑提取到custom hook
| 归档时间: |
|
| 查看次数: |
2847 次 |
| 最近记录: |