AllenCai 最近的时间轴更新
AllenCai

AllenCai

V2EX 第 435633 号会员,加入于 2019-08-13 13:44:47 +08:00
AllenCai 最近回复了
@shakukansp 是的,因为 reactive 的 proxy 化时深层的,所以第一层解开会有第二层的 proxy 在,只有当值为基础类型时,解构赋值会把引用断开
shakukansp 他说的是解构会导致 proxy 对象被解开,触发不了 proxy 里的 getter ,是原因所在。
johnkiller 他说的是将之前的 proxy 引用放在一个新作用域里,所以解构后还是在使用之前的 proxy 引用,实现 OP 的效果,是一种解决办法。
我先打脸我自己,其实#70 这样写根本就不用 toRefs
看了这么久,其实就是 proxy 的问题
我觉得两个人说的都对,只是各自角度不同。
还有 demo2 改成 toRefs 会不会就实现 OP 的效果了?只谈实现不谈原理。
<script>
import { defineComponent, ref, toRefs, computed, reactive } from "vue";

function useCounter() {
const number = ref(0);
const count = computed(() => number.value + 1);
return toRefs({
// count 是一个 ref
count,
number,
});
}
export default defineComponent({
setup() {
const counter = useCounter();

return () => {
// 解构 count 为 ref
return <Display {...counter} />;
};
},
});

function Display(props) {
return (
<div>
<button onClick={() => props.number.value++}>inc</button>
<div>{props.count.value}</div>
</div>
);
}
</script>
You’re #869034 in line
163 天前
回复了 yc23232 创建的主题 程序员 面试紧张怎么缓解
当这份工作对你来说并不是特别重要的时候,就不会紧张.
在 B 站看过视频,原来是你啊
171 天前
回复了 kisshere 创建的主题 程序员 网页怎样尽可能禁止用户复制图片地址?
blob 试试
171 天前
回复了 Crackers 创建的主题 生活 自行车选购
要不加点钱就电动车吧
关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   2309 人在线   最高记录 5556   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 06:03 · PVG 14:03 · LAX 23:03 · JFK 02:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.