美文网首页
Solid入门

Solid入门

作者: yozosann | 来源:发表于2023-03-31 16:29 被阅读0次

Signal

如同React的useState,会返回一个[getter, setter]。

import { render } from "solid-js/web";
import { createSignal } from "solid-js";

const [count, setCount] = createSignal(0);

function Counter() {
  return <div>Count: {count()}</div>;
}

render(() => <Counter />, document.getElementById('app'));

不同的在于React中的getter是可以直接访问count,而vue3是count.value,视图层也可以直接使用count。

Effect

这就类似于vue2的watch,监听属性的变化。

createEffect(() => {
  console.log("The count is now", count());
});

每次count发生变化,都会执行createEffect。

衍生Signal

import { render } from "solid-js/web";
import { createSignal } from "solid-js";

function Counter() {
  const [count, setCount] = createSignal(0);

  setInterval(() => setCount(count() + 1), 1000);

  return <div>Count: {count() * 2}</div>;
}

render(() => <Counter />, document.getElementById('app'));

可以相信每次count发生变化的时候count() * 2 都会重新计算。
那么在Solid里,我就可以将count() * 2抽出来:

const doubleCount = () => count() * 2;

而在合适的地方直接调用doubleCount即可:

return <div>Count: {doubleCount()}</div>;

Memo

比如我在页面里用了15个doubleCount:

return <div>{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}-{doubleCount()}</div>;

那么实际上 count() * 2会执行15次,但实际count()的值并没有发生任何变化,我们相当于白执行了14次。
那么我们可以这么写这个doubleCount:

const doubleCount = createMemo();

那么这个时候上面那段代码() => count() * 2其实就只会执行一次。

相关文章

  • SOLID 原则

    SOLID 作为开篇,这篇文章主要来介绍SOLID原则。 SOLID 原则提供了五条指导思想,如果我们遵从...

  • SOLID

    面向对象程序设计5大原则 单一职责原则(Single Responsibility Principle) 开放封闭...

  • 无标题文章

    width: 65%;border: 1px solid #ddd;outline: 1300px solid #...

  • 一分钟搞懂SOLID原则

    SOLID原则是面向对象设计的一个基本原则,通过这篇短文我们可以很快了解SOLID原则的核心思想。原文:SOLID...

  • SSD性能测试平台(1)

    介绍 固态驱动器(Solid State Disk或Solid State Drive,简称SSD),俗称固态硬盘...

  • div高度问题,能不写死,千万不要写死

    border:1px solid red; 包含在高度内outline:1px solid red; 不计入高度 ...

  • 怎么判断某个类符合单一职责原则

    经典的设计原则,其中包括,SOLID、KISS、YAGNI、DRY、LOD 等。 其中的SOLID 原则,实际上,...

  • 什么是固态硬盘

    固态硬盘或固态驱动器(Solid-state drive 或 Solid-state disk,简称 SSD)是一...

  • SOLID Principles

    Single responsibility principle 单一功能原则a class should have...

  • SOLID原则

    S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Pricipl...

网友评论

      本文标题:Solid入门

      本文链接:https://www.haomeiwen.com/subject/bwkwcdtx.html