面试题答案
一键面试createSignal基本语法
在Solid.js中,createSignal
的基本语法为:
import { createSignal } from 'solid-js';
// 创建一个信号,第一个参数是初始值
const [count, setCount] = createSignal(0);
这里createSignal
接受一个初始值作为参数,并返回一个包含两个元素的数组。第一个元素是当前状态值(例如上述代码中的count
),第二个元素是用于更新状态值的函数(例如上述代码中的setCount
)。
创建响应式状态原理
Solid.js 使用细粒度的响应式系统。当使用createSignal
创建信号时,Solid.js会在内部跟踪对信号值的读取和写入操作。每当状态值(通过setCount
函数)发生变化时,依赖该信号的组件或函数会自动重新执行或重新渲染,从而实现响应式更新。
简单计数器组件示例
import { createSignal } from 'solid-js';
import { render } from 'solid-js/web';
const Counter = () => {
const [count, setCount] = createSignal(0);
const increment = () => {
setCount(count() + 1);
};
const decrement = () => {
setCount(count() - 1);
};
return (
<div>
<p>Count: {count()}</p>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
</div>
);
};
render(() => <Counter />, document.getElementById('app'));
在上述代码中,Counter
组件使用createSignal
创建了一个初始值为0的计数器count
和更新函数setCount
。increment
和decrement
函数分别通过setCount
来更新count
的值。每当按钮点击导致count
值变化时,<p>Count: {count()}</p>
这部分视图会自动更新,因为它依赖于count
信号。