面试题答案
一键面试原理
在Solid.js中,For
组件依赖响应式数据。当数组作为响应式数据发生变化时,Solid.js的细粒度响应式系统会检测到这种变化。Solid.js会重新运行依赖该数组的副作用(这里就是 For
组件的渲染逻辑),从而确保视图能够正确更新。
代码示例
import { createSignal, For } from 'solid-js';
const App = () => {
const [items, setItems] = createSignal<string[]>(['item1', 'item2']);
const addItem = () => {
setItems([...items(), `item${items().length + 1}`]);
};
const removeItem = () => {
if (items().length > 0) {
setItems(items().slice(0, -1));
}
};
return (
<div>
<ul>
<For each={items()}>{(item, index) => <li key={index}>{item}</li>}</For>
</ul>
<button onClick={addItem}>添加元素</button>
<button onClick={removeItem}>删除元素</button>
</div>
);
};
export default App;
在上述代码中,通过 createSignal
创建了一个响应式的数组 items
及其更新函数 setItems
。For
组件依赖 items
数组进行渲染。点击 “添加元素” 按钮时,通过 setItems
向数组中添加新元素;点击 “删除元素” 按钮时,通过 setItems
从数组中删除最后一个元素。每次数组变化,For
组件都会重新渲染,以反映数组的最新状态。