面试题答案
一键面试信号的创建
在Solid.js中,使用 createSignal
函数来创建信号。它接受一个初始值作为参数,并返回一个包含两个元素的数组。第一个元素是用于读取信号值的访问器函数,第二个元素是用于更新信号值的设置器函数。例如:
import { createSignal } from 'solid-js';
const [count, setCount] = createSignal(0);
这里创建了一个名为 count
的信号,初始值为 0
,setCount
用于更新这个信号的值。
信号的更新
通过调用设置器函数来更新信号值。每当设置器函数被调用,与之关联的响应式代码(如视图)会自动重新执行以反映新的值。
setCount(count() + 1);
上述代码将 count
的值增加 1
。设置器函数会触发响应式系统,使得依赖于 count
的部分进行更新。
在组件中使用信号触发响应式变化
- 在视图中使用:在Solid.js组件中,信号的访问器函数可以直接在视图中使用。Solid.js会自动追踪哪些视图依赖了该信号。
import { createSignal } from 'solid-js';
import { render } from 'solid-js/web';
const App = () => {
const [count, setCount] = createSignal(0);
return (
<div>
<p>Count: {count()}</p>
<button onClick={() => setCount(count() + 1)}>Increment</button>
</div>
);
};
render(() => <App />, document.getElementById('root'));
在此例中,<p>Count: {count()}</p>
依赖于 count
信号,当 count
通过 setCount
更新时,这部分视图会重新渲染。
- 在副作用中使用:可以在
createEffect
中使用信号。createEffect
会在信号值变化时自动重新运行。
import { createSignal, createEffect } from 'solid-js';
const [count, setCount] = createSignal(0);
createEffect(() => {
console.log('Count has changed to:', count());
});
setCount(1);
上述代码中,createEffect
内的回调函数会在 count
信号值变化时执行,打印出更新后的 count
值。