MST

星途 面试题库

面试题:Solid.js 中 createMemo 的缓存机制基本原理

请简要阐述 Solid.js 里 createMemo 的缓存机制是如何工作的,在什么情况下会触发缓存更新?
28.8万 热度难度
前端开发Solid.js

知识考点

AI 面试

面试题答案

一键面试

createMemo 缓存机制工作原理

  1. 初始求值:当 createMemo 第一次被调用时,它会执行传入的函数,并缓存该函数的返回值。例如:
import { createMemo } from'solid-js';

const count = createMemo(() => {
  // 假设这里有复杂计算
  return someComplexCalculation(); 
});

此时,someComplexCalculation 函数被执行,其返回值被缓存。

  1. 依赖追踪createMemo 会自动追踪它所依赖的响应式数据。如果依赖的响应式数据没有变化,后续访问 createMemo 返回的缓存值时,不会重新执行传入的函数,而是直接返回缓存的值。

缓存更新触发情况

  1. 依赖数据变化:当 createMemo 内部依赖的响应式数据(如 createSignal 创建的信号值)发生变化时,缓存会被更新。例如:
import { createMemo, createSignal } from'solid-js';

const [name, setName] = createSignal('');
const greet = createMemo(() => `Hello, ${name()}`);

setName('John'); // 此时 name 信号值变化,greet 的缓存会更新
  1. 组件重新渲染(如果适用):在 Solid.js 组件中,如果组件重新渲染,并且 createMemo 依赖的组件作用域内的响应式状态发生变化,也会触发 createMemo 缓存更新。不过需要注意的是,Solid.js 的细粒度更新机制使得只有真正依赖的部分才会触发更新,而非整个组件重新渲染就一定导致 createMemo 缓存更新。