vue中,同步执行的问题

发布于 2022-09-07 07:50:22 字数 936 浏览 17 评论 0

vue中,有以下代码,其中,arr是放在vuex中,

arr={"costPrice":"","jdPrice":"","sellerSkuId":"","skuId":null,"skuName":"Dyy-test-451331  ","stock":"","netWeight":"","packHeight":"","packLong":"","packWide":"","piece":0,"textAttrValueAlias":"BLACK","textAttrValueId":2258240,"upc":"","stockVOs":[{"dcId":"","dcName":"","storeId":"","storeName":""},{"dcId":"","dcName":"","storeId":"","storeName":""},{"dcId":"","dcName":"","storeId":"","storeName":""},{"dcId":"","dcName":"","storeId":"","storeName":""},{"dcId":"","dcName":"","storeId":"","storeName":""}],"textShowFlag":true}

然后,更改arr

console.log(arr)
console.log(JSON.stringify(arr))
console.log(arr.textShowFlag)
Vue.set(this.skuListGroupVOs[rowNumber].childList[columnNumber], 'textShowFlag', !arr.textShowFlag)

为什么会出现JSON.stringify前后不一致的问题?
clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暮色兮凉城 2022-09-14 07:50:22

浏览器 为了 性能,在console.log时候 仅仅只会保存对象的引用,所以console.log输出的并不是当前的值
很可能是异步之后的 对象值
而 JSON.stringify 把 这个变为了字符串,不存在 字符串改变的情况,仅此而已

诗化ㄋ丶相逢 2022-09-14 07:50:22

textShowFlag原本本就是false
打印的时候arr中的textShowFlag也是false,但是后面你执行了取反操作,arr中的textShowFlag变成了true
注意,此时你再看是true,因为打印的是引用,点开之后是是取反后的最终值
你可以debugger看一下,此时arr点开的textShowFlag是false。

console.log(arr)
console.log(JSON.stringify(arr))
console.log(arr.textShowFlag)
debugger
Vue.set(this.skuListGroupVOs[rowNumber].childList[columnNumber], 'textShowFlag', !arr.textShowFlag)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文