亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么我這樣設置ref.current也是自增的,并不是不變的

import React, { useState, useEffect, useLayoutEffect, useMemo, useCallback, useRef } from "react";


export default function StateFunction() {

const [num, setNum] = useState(1)

/*****useRef的使用 start======***********************/

const ref = useRef()

useEffect(() => {

ref.current = setInterval(() => {

setNum(value => value + 1)

}, 1000);

})


useEffect(() => {

if (num > 10) {

console.log('num>10');

clearInterval(ref.current)

}

console.log('ref =', ref);

}, [num])

/*****useRef的使用 end======***********************/



return (

<div>

這是一個函數組件:

<div>num={num}</div>

</div>

)

}




輸出:

ref = {current: 2}

TestUseRef.js:22 ref = {current: 4}

TestUseRef.js:22 ref = {current: 5}

TestUseRef.js:22 ref = {current: 6}

TestUseRef.js:22 ref = {current: 7}

TestUseRef.js:22 ref = {current: 8}

TestUseRef.js:22 ref = {current: 9}

TestUseRef.js:22 ref = {current: 10}

TestUseRef.js:22 ref = {current: 11}

TestUseRef.js:22 ref = {current: 12}

TestUseRef.js:20 num>10

TestUseRef.js:22 ref = {current: 13}


正在回答

1 回答

后面依賴項數組如果不寫,就相當于添加了所有的依賴項,依賴項為[],則表示不依賴任何屬性,這樣useEffect就相當于只執行一次,ref.current是不變的,只有一個值,因為只執行了一次,否則相當于多次執行useEffect,每次重新執行setInterval 都會有一個新id

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么我這樣設置ref.current也是自增的,并不是不變的

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號