如何用hooks實現class元件this setState的callback

時間 2021-05-29 23:14:24

1樓:supyp

我說說我所知道的方法

const [count1, setCount1] = React.useState(0);

const [count2, setCount2] = React.useState(0);

setCount1(num => )

經過測試,結果如上所示,為什麼第三種是錯誤的,我也不清楚,希望有大佬可以幫我解釋一下

const [count1, setCount1] = React.useState(0);

const [count2, setCount2] = React.useState(0);

new Promise((resolve) => );

const [count1, setCount1] = React.useState(0);

const [count2, setCount2] = React.useState(0);

React.useEffect(() => , [count1])

setCount1(num => )

2樓:

我之前寫過乙個useAsyncState, 使用Promise來做的. 用起來大概這樣, 不知道是不是符合題主的要求:

實現在這裡: https://

希望可以作為參考

3樓:陸沉

理解一下題主的需求:

精細地控制某一次setState才呼叫callback其實想要的不是「每一次 setState」 都 callback,而是類似之前 class 的 setState 時一樣,在想要 callback 的地方手動 setStategt; {})

其實可以用 ref

function

SomeComponent

());

const

doSomethingRef

=useRef

(false

);const

doSomethingElseRef

=useRef

(false

);// 在這裡處理

useEffect

(()=>},[

doSomethingRef

]);// 在這裡處理第二個

useEffect

(()=>},[

doSomethingElseRef

]);function

trigger

());

doSomethingRef

.current

=true

;// 這樣改。。

}function

triggerElse

());

doSomethingElseRef

.current

=true

;// 這樣改。。

}return

...;

}寫起來比較奇怪。但是滿足題主的沒有過多的條件控制語句的需求

4樓:伊撒爾

5樓:Frank1e

import from 'react'

export function useStateCallback(init: INIT_STATE, cb: (initState:

INIT_STATE) => void) , [state, cb])

return [state, setState]}mmmm,你試試符合嗎?(

const [value, setValue] = useStateCallback(1, (state) =>

-------分割線

重新修改了,仔細看了一下題主的問題。

export

function

useStateCallback

(init)},

[setState

])return

[state

,handler]}

const

[value

,setValue]=

useStateCallback(1

)const

[value2

,setValue2]=

useStateCallback(1

)const

[vObj

,setVobj]=

useStateCallback

()constcb=

useCallback

((currentState

)=>},)

const

handler=(

e)=>,(

currentState

)=>)}

const

handler2=(

e)=>)}

如何用python實現行列互換?

程式設計小白一枚,使用python 3.6 笨辦法 b fori inrange len a 0 row forj inrange len a row.a j i b.row print b 以上寫成一句 print row i for rowina fori inrange len a 0 用函式...

如何用Haskell實現物件導向程式設計?

圓角騎士魔理沙 剛剛讀完了Haskell s overlooked object system,給出了幾個proposal,最後深入研究用HList encode recursive record。很有意思,比如說,class,label是first class的,所以多重繼承玩得很溜,比如說可以自...

如何用200元實現財富自由?

已登出 能擁有正向現金流,相較於負債累累的人,有200元正資產,已經算是實現了財富自由。這是和誰比的問題。和那些陷入債務危機的人比,能擁有正向現金流已經很優秀了,哪怕只有200元。若只和自己比,能擁有200元正向現金流,而不是因為消費慾望過度和投機投資心思太重陷入債務危機,也已經很優秀了。其次,我們...