面试题答案
一键面试- 结合使用场景
createSignal
用于创建响应式状态,它会跟踪状态的变化并在状态改变时触发相关副作用或重新渲染。createMemo
用于创建派生状态,只有当它依赖的响应式状态变化时才会重新计算,常用于缓存一些计算结果,避免不必要的重复计算。- 例如在一个计数器场景中,计数器本身的数值用
createSignal
创建,而根据计数器数值派生出来的其他状态(如是否为偶数、某个特定条件下的文本等)可以用createMemo
来创建。
- 代码实现逻辑示例
import { createSignal, createMemo } from'solid-js';
const App = () => {
// 创建计数器信号,初始值为0
const [count, setCount] = createSignal(0);
// 使用createMemo根据count派生一个状态,判断count是否为偶数
const isEven = createMemo(() => count() % 2 === 0);
return (
<div>
<p>Count: {count()}</p>
<p>Is Even: {isEven()? 'Yes' : 'No'}</p>
<button onClick={() => setCount(count() + 1)}>Increment</button>
</div>
);
};
export default App;
在上述代码中,createSignal
创建了计数器count
和修改它的函数setCount
。createMemo
创建了派生状态isEven
,只有当count
变化时,isEven
才会重新计算。每次点击按钮,count
增加,isEven
会根据新的count
值重新计算,页面也会相应更新显示新的结果。