useEffect我在一个功能组件中使用反应钩子,并且想知道当你不指定依赖项时它的用途是什么。我知道它用于副作用的文档状态,但我的问题是为什么这些副作用不能只在功能组件内使用纯 JS 运行?作为一个非常基本的示例,我正在使用以下代码:
import {useEffect, useState} from 'react'
function Child () {
const [clickCount, updateCount] = useState(0)
console.log('Run outside of useEffect')
useEffect(()=>{
console.log("Run inside of useEffect")
})
return (
<button onClick = {() => updateCount(clickCount+1)}> Child COmponent </button>
)
}
export default Child
正如您所期望的那样,它基本上只是一个普通的 JS 函数,在每次由单击按钮引起的重新渲染时,console.log都会执行这两个函数。
useEffect我理解为什么您可能想在如下情况下使用,您只想useEffect在特定更改时运行:
import {useEffect, useState} from 'react'
function Child () {
const [clickCount, updateCount] = useState(0)
console.log('Run outside of useEffect')
//this now only runs when `someVariable` changes
useEffect(()=>{
console.log("Run inside of useEffect")
}, [someVariable])
return (
<button onClick = {() => updateCount(clickCount+1)}> Child COmponent </button>
)
}
export default Child
useEffect但这引出了一个问题,除非您将依赖矩阵指定为第二个参数,否则using 有什么意义?副作用不能只使用普通 JS 正常运行吗?
蝴蝶不菲
米琪卡哇伊
相关分类