SolidJS中有一个组件如下所示:
const MyComponent: Component = (params) => {
// ...
const [votes, setVotes] = createSignal(new Set());
const toggle = (val: string) => {
if (votes().has(val)) {
let _votes = votes();
_votes.delete(val);
setVotes(_votes);
} else {
let _votes = votes();
_votes.add(val);
setVotes(_votes);
}
}
return <>
<For each={someArray()}>{(opt, i) =>
<button
style={{
color: `${ votes().has(opt) ? "blue" : "black"}`
}}
onClick={() => { toggle(opt) } }
>
{opt()}
</button>
}</For>
</>
}
我想做的是,按钮的样式将根据votes
组中是否存在按钮(for循环中为opt
)而改变.
但是,此代码不起作用.更新投票时不会更新.
投票变量确实按预期更新.
当我给投票设置一个初始值时,会显示正确的样式(但之后不会更新).
有什么解决办法可以让这一切顺利进行吗?