记一次面试记录的问题,ref对于普通类型是如何处理的

53 阅读1分钟

前言

之前有次面试,面试官问我ref的源码对于普通类型是怎么处理的,但是我只记得,ref对于普通类型是进行了直接返回,本文在此进行记录。

代码逻辑介绍

ref --> createRef --> RefImpl

代码文件夹位置

packages\reactivity\src\ref.ts

代码截图

ts的重载,前面两个是类型定义,最后一个是实现载体 image.png 判断是否是ref,是就返回 ,,,下面不说了,直接上图。。。。。。。。。。 image.png

image.png

image.png

image.png

解析

首先使用createRef去创建一个ref类,并在之前使用isref函数判断是否是ref了,是就返回原参数。
看代码能看出get或者setvalue都是返回的_value内容,该内容来源于

image.png

image.png 本文探究的普通类型,所以_value是直接等于原参数的,只是过程中get加了trace过程,set是trigger方法。