首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套createEffect不会再触发

嵌套createEffect不会再触发
EN

Stack Overflow用户
提问于 2022-04-22 19:31:19
回答 1查看 243关注 0票数 2

我不确定,我是否正确地重复了我的问题,但这里是:

在呈现信号方面,我有某种类型的对象创建,这会导致更多依赖于更新信号的创建效果。但不知何故,范围被处理了,并且它只在创建时触发一次。即使我有对这些对象的引用,如何确保嵌套的createEffect继续运行呢?

代码语言:javascript
复制
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'))

我要regularinside记录每隔一段时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-22 19:56:54

可以使用createRoot覆盖嵌套createEffect的根。否则,它将在“父”效应的每次重新运行时被释放。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71973764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档