小编Ste*_*uss的帖子

在 SolidJS 中,信号如何重复渲染到 DOM 中?

我想我对反应性方面的信号、反应、推导非常了解。

但是,我无法理解如何突然将它们放入函数中,App()并且信号可以在信号更新时重复更新到 DOM 中?

我想也许这个文档解释了它,但它似乎太复杂了,难以理解。能用几段话解释清楚吗?

例如,我想象

<div>{value()}</div>
Run Code Online (Sandbox Code Playgroud)

从哪里来value()

const [value, setValue] = createSignal(123);
Run Code Online (Sandbox Code Playgroud)

会有一些代码来产生一些 Reaction 来对 Signalvalue的更改做出反应并更新 DOM,但是它是如何发生的呢?这createSignal()和普通版一样createSignal()还是特别版,设置了一个 Reaction 来更新 DOM?另外相关的是,既然App()只运行一次,那么为什么render()需要采取() => <App />但不能只采取<App />作为它的第一个参数呢?如果App()仅运行一次,则意味着() => <App />仅运行一次。那么为什么不直接给出 a<App />呢?

solid-js

2
推荐指数
1
解决办法
909
查看次数

useCallback 如何帮助代码运行得更快?

所以据说useCallback可以缓存一个函数,我认为目的是让代码运行得更快。

例如,如果我有:

  const handleChange = (ev) => {
    setMsg(ev.target.value);
  };
Run Code Online (Sandbox Code Playgroud)

我也可以将其更改为:

  const handleChange = useCallback((ev) => {
    setMsg(ev.target.value);
  }, []);
Run Code Online (Sandbox Code Playgroud)

这样现在函数就被缓存了。但是,每次重新渲染组件时是否都需要创建此函数?

为了测试它,我将其更改为 IIFE,以便从其中吐出该函数,并且它会打印出该函数正在吐出。

请参阅: https ://codesandbox.io/s/jolly-nightingale-zxqp8k

因此,每次当您在输入字段中输入内容时,都会输出一个新函数,如控制台中所示。因此,这意味着 IIFE 每次都会以任何方式执行,这意味着即使它不是 IIFE,函数文字每次也会被制作成函数对象。那么这如何帮助代码运行得更快呢?

reactjs react-hooks

1
推荐指数
1
解决办法
51
查看次数

标签 统计

react-hooks ×1

reactjs ×1

solid-js ×1