我不確定,如果我正確地重現了我的問題,但這里是:
在渲染信號上,我創建了某種物件,這會導致更多依賴于更新信號的創建效果。但不知何故,范圍被處置了,它只在創建時觸發一次。即使我參考了這些物件,如何確保嵌套的 createEffect 不斷觸發?
import { render } from 'solid-js/web';
import { on, createSignal, createEffect } from 'solid-js'
function HelloWorld() {
let [render, setRender] = createSignal(undefined, { equals: false })
let [update, setUpdate] = createSignal(undefined, { equals: false })
let i = 0
createEffect(on(render, () => {
if (i === 1) {
createEffect(on(update, () => {
console.log('inside')
}))
}
}))
createEffect(on(update, () => {
console.log('regular', i)
}))
setInterval(() => {
setUpdate();
setRender();
})
return <div>Hello World!</div>;
}
render(() => <HelloWorld />, document.getElementById('app'))
我想要regular并inside記錄每個間隔。
uj5u.com熱心網友回復:
您可以使用createRoot覆寫嵌套的根createEffect。否則,它將在每次重新運行“父”效果時處理。
createEffect(() => {
createRoot(dispose => {
// effect will be disposed only when
// the dispose() fn get's called
createEffect(() => {...})
})
})
https://playground.solidjs.com/?hash=-999371052&version=1.3.13
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/461788.html
標籤:javascript 打字稿 固体js
