实现思路
- 使用
createSignal
创建任务列表的状态,该状态包含每个任务的完成状态。
- 利用
map
方法遍历任务列表,渲染每个任务项。
- 为每个任务项添加点击事件处理函数,在点击时更新对应任务的完成状态。由于 Solid.js 的响应式系统基于细粒度的跟踪,单个任务状态的更新不会触发不必要的重新渲染,从而保证性能。
关键代码片段
import { createSignal } from 'solid-js';
function TaskList() {
const [tasks, setTasks] = createSignal([
{ id: 1, text: '任务1', completed: false },
{ id: 2, text: '任务2', completed: false }
]);
const handleTaskClick = (taskId) => {
setTasks(t => t.map(task =>
task.id === taskId ? { ...task, completed: !task.completed } : task
));
};
return (
<ul>
{tasks().map(task => (
<li
key={task.id}
onClick={() => handleTaskClick(task.id)}
style={{ textDecoration: task.completed ? 'line-through' : 'none' }}
>
{task.text} - {task.completed ? '已完成' : '未完成'}
</li>
))}
</ul>
);
}
export default TaskList;