ReactでsetIntervalが効かなくて困ったので調査
スマートな解決方法が載っている記事がヒットしたので備忘録として残しておく。
参考記事: Making setInterval Declarative with React Hooks
数時間以上React Hooksを使っていたら、
おそらく興味をそそられる問題にぶつかったことでしょう。
setIntervalを使っても思ったようにはいかないのです。
という訳でこの記事のコードをLiveScriptで書き直したのがこちら。
JavaScriptのコードは上記の記事を参考。
functions/use-interval.ls
require! {
react: {use-ref, use-effect}
}
module.exports = (cb, delay) !->
saved-cb = use-ref!
use-effect do
-> saved-cb.current = cb
[cb]
use-effect do
->
if delay isnt null
id = set-interval _, delay <| -> saved-cb.current!
return -> clear-interval id
[delay]