V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  shakukansp  ›  全部回复第 12 页 / 共 26 页
回复总数  505
1 ... 8  9  10  11  12  13  14  15  16  17 ... 26  
2023-01-03 00:25:07 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 嘿,回你 43 楼,那你讲讲,const a = ref(1), 为什么 watch 要传 () => a.value 或者 a, 而不能传 a.value?
2023-01-03 00:20:42 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 你这又是把 setup 当渲染函数,又把东西放函数里了,要像 react 一样 setup 运行多次才能通过 getter 读取到新值。

我就问你,假如 setup 返回一个对象而不是渲染函数 那你这 { count: count.value, inc: () => count.value++ } 还能行吗
2023-01-03 00:05:41 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 为什么在函数里就能触发 getter 了?本质是什么,我真服了
2023-01-02 23:53:47 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
let a = 1
const fn = () => { console.log(a) }
fn()
a = 2
fn()

为啥两次打印的结果不一样啊
楼主你不要听楼上那个 pr 过 vue/reactive 的
2023-01-02 23:47:26 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller emmm 只能说得亏是 setup 里面 return 是个函数你才能得瑟,那你倒是讲讲 vue 为什么要你 return 一个函数啊
2023-01-02 23:39:33 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
写函数外面然后在函数里面{...props}
是不是也调用 props 的 getter 了?那为什么写函数外面运行 inc 触发不了视图更新?不就是引用没了吗
2023-01-02 23:33:57 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 回你 30 楼 我都说了,你写在函数里面当然没问题,是引用传递,你写函数外面还能这样?你再想想?还要我多看看源码,自己多提升一下 js 基础吧
2023-01-02 23:32:12 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 我的意思是解决这个问题并不需要懂 vue 的响应式原理,丢失响应式就是个引用链断裂的问题

你把变量声明写在函数里,也是建立了对 js 对象值的引用,这和 vue 并没有什么关系

要让它按楼主想的一样运行实际操作就是像官方文档一样照本宣科用 reactive 包一下 ref ,这样 vue 自然有内部操作去数据代理

const a = reacvtive({ c:1 })
const b = ref(3)
a.c = b.value
a.c = b
console.log(a)得到的结果都是 a 是 { c:3 } 用脚想都知道直接传包装对象 ref 的时候 vue 会有特殊的操作
不需要懂什么响应式原理,要的就是一句官方文档的说明

OP 写过 golang 就能对 js 这个基本特性有更深的理解
2023-01-02 23:13:53 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
你这个代码能生效是因为在函数里面的 count.value 是引用传递,而不是值传递啊

传 () => string 能和直接传 string 一样吗
2023-01-02 23:11:15 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 你发的这个例子和楼主的原代码根本就是两码事了

本质就是引用问题
2023-01-02 23:10:11 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 你在说啥,大哥,你这是在 return 的函数里面声明的对象,本身这个函数就是对值的引用了,
你在 return 函数外面声明试试?
2023-01-02 22:03:55 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
OP 不用很迷惑

网上的文章说的 vue3 中失去响应式的陷阱

无一例外都不是陷阱,是符合 JS 基础特性的预期内行为

只要你理解好引用传递,面对这个现象就不会感觉奇怪
2023-01-02 21:57:05 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@johnkiller 主要问题还是引用链断裂而不是没有在 render 里面触发 getter

原段代码就算把 someprops 改成 reactive ,依然无法通过修改 getOne.value 的值来触发视图更新,就算 getOne.value 里面的值是个对象也一样,具体会表现为修改 getOne.value 中对象的子属性可以触发更新,但是给 getOne.value 赋值一个不同引用的对象就会没法更新视图。

reactive(someprops)
someprops.one = getOne.value 和 someprops.one = getOne ,是两码事,后者 vue 会在解包 ref 时额外进行数据代理的链接
2023-01-01 02:31:26 +08:00
回复了 shakukansp 创建的主题 Apple 网易邮箱大师 mac 版支持 m1 了
也不用比来比去,劝我不要用,因为我确实没用这个客户端,我用的 edison mail 和 mimestream
网易邮箱大师用过一段时间觉得还行,出了 m1 版本的支会一下而已(
2022-12-31 23:22:01 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
再举一个比较日常的例子
const a = 1
const b = { c:2 }
const fn = (param) => { if (typeof param === 'number') param + 1 else param.c + 1 }

fn(a)
fn(b)

console.log(a)
console.log(b)
你能搞清楚最后打印出来的分别是多少,那就能明白你这代码里有什么问题
2022-12-31 23:16:26 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
@daiwenzh5 我在说你把值给 one ,getOne.value 是值,getOne 是包装对象
这是 js 基础知识而不是响不响应式
const a = { c: 2 }
const b = { a: 1 }
你现在是 b.a = a.c
而不是 b.a = a
引用传递和值传递能分清吗
2022-12-31 22:10:08 +08:00
回复了 daiwenzh5 创建的主题 Vue.js vue3 里面使用 jsx 解构属性,响应式丢失了,怎么处理
??你在说什么

你这是把值赋给了 someprops.one ,又不是把包装对象赋值给 someprops
2022-12-31 13:23:18 +08:00
回复了 shakukansp 创建的主题 Apple 网易邮箱大师 mac 版支持 m1 了
@8675bc86 不好,莫名 cpu100% 能耗爆炸
2022-12-31 12:51:45 +08:00
回复了 shakukansp 创建的主题 Apple 网易邮箱大师 mac 版支持 m1 了
@quzard 下下来,然后开活动监视器看[种类]
2022-12-31 11:50:45 +08:00
回复了 shakukansp 创建的主题 Apple 网易邮箱大师 mac 版支持 m1 了
@Jxcrow app store 是 m1
1 ... 8  9  10  11  12  13  14  15  16  17 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2816 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 11:31 · PVG 19:31 · LAX 03:31 · JFK 06:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.