Svelte Writable Stores中n+1与n++的更新差异问题
为什么Svelte Writable Store中
n++无法更新值而n+1可以? 问题的核心在于JavaScript自增运算符的行为,以及Svelte Writable Store的update方法的工作逻辑:
Svelte
update方法的要求writable store的update方法需要传入一个回调函数,这个函数会接收当前的store值作为参数,只有当回调返回一个新的、与当前值不同的结果时,store才会更新并触发组件的重新渲染。n+1vsn++的区别
n+1:这是一个简单的加法表达式,直接返回n加1后的新值。比如当前n是2,返回3,store拿到这个新值后就会完成更新。n++:这是后置自增运算符,它的执行逻辑是:先返回变量当前的原始值,再把变量本身的值加1。也就是说,当你在回调里返回n++时,实际返回的是原来的n值(比如当前n是2,返回的还是2),store拿到和当前状态一样的值,自然不会触发更新。
如果想用自增的写法,换成**前置自增运算符++n**就可以正常工作了——它会先把n的值加1,再返回新的结果:
function increment() { count.update((n) => ++n); }
内容的提问来源于stack exchange,提问作者lm5050
相关产品推荐
相关产品推荐

