面试题答案
一键面试实现思路
- 使用响应式数据:在Solid.js中,使用
createSignal
创建响应式数据来存储列表数据源。 - 处理输入事件:为文本输入框绑定
onInput
事件,在事件处理函数中更新响应式数据。 - 避免不必要渲染:利用Solid.js的细粒度更新机制,通过
createMemo
和依赖追踪,确保只有依赖数据变化时才触发重新渲染。
关键代码片段
import { createSignal, createMemo } from 'solid-js';
const App = () => {
const [list, setList] = createSignal([
{ id: 1, value: '' },
{ id: 2, value: '' }
]);
const handleInput = (id, value) => {
setList(prevList =>
prevList.map(item =>
item.id === id ? { ...item, value } : item
)
);
};
const memoizedList = createMemo(() => list());
return (
<div>
{memoizedList().map(item => (
<input
key={item.id}
value={item.value}
onInput={(e) => handleInput(item.id, e.target.value)}
/>
))}
</div>
);
};
export default App;
在上述代码中:
createSignal
创建了list
和setList
,用于存储和更新列表数据。handleInput
函数在输入事件触发时更新列表数据。createMemo
创建了memoizedList
,使得列表渲染部分仅在list
数据变化时重新渲染,避免了不必要的重新渲染。