前言
之前有次面试,面试官问我ref的源码对于普通类型是怎么处理的,但是我只记得,ref对于普通类型是进行了直接返回,本文在此进行记录。
代码逻辑介绍
ref --> createRef --> RefImpl
代码文件夹位置
packages\reactivity\src\ref.ts
代码截图
ts的重载,前面两个是类型定义,最后一个是实现载体
判断是否是ref,是就返回 ,,,下面不说了,直接上图。。。。。。。。。。
解析
首先使用createRef去创建一个ref类,并在之前使用isref函数判断是否是ref了,是就返回原参数。
看代码能看出get或者setvalue都是返回的_value内容,该内容来源于
本文探究的普通类型,所以_value是直接等于原参数的,只是过程中get加了trace过程,set是trigger方法。