我不确定,我是否正确地重复了我的问题,但这里是:
在呈现信号方面,我有某种类型的对象创建,这会导致更多依赖于更新信号的创建效果。但不知何故,范围被处理了,并且它只在创建时触发一次。即使我有对这些对象的引用,如何确保嵌套的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记录每隔一段时间。
发布于 2022-04-22 19:56:54
可以使用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://stackoverflow.com/questions/71973764
复制相似问题