楼主一直没有弄明白,那个 ref 对象 到底是啥? html 里面好像有, react 里面也经常看到,什么 useRef

2021-04-07 15:50:53 +08:00
 yazoox

类似于,

  <input ref={这个东东} type="text" />

或者,reactjs 里面的 useRef,还经常看到 forwardRef, etc.

可是,一直都弄不明白,这个 Ref 到底是个啥?有没有文档能够言简意赅的讲清楚的?谢谢

p.s. 不知道这个主题是应该放到 html 还是 javascript,版主觉得要是不合适,帮忙搬一下。谢谢。

4585 次点击
所在节点    JavaScript
26 条回复
mxT52CRuqR6o5
2021-04-07 15:52:48 +08:00
66beta
2021-04-07 15:53:35 +08:00
vivipure
2021-04-07 15:56:23 +08:00
React 和 Vue 中都有 ref, 主要是为了框架操作 dom 或者组件用的;也没啥好记得
zhuweiyou
2021-04-07 15:59:33 +08:00
操作 dom 或者调用组件方法时用的
cydysm
2021-04-07 16:00:48 +08:00
用来获取 element 实例
RomeoHong
2021-04-07 16:04:44 +08:00
可以理解类似于引用 /指针,对 DOM 对象或组件实例的引用,引用后可以调用 DOM 对象上或组件实例的上的方法
superrichman
2021-04-07 16:04:53 +08:00
这玩意是不是跟 getElementById 差不多?
dablwow
2021-04-07 16:13:01 +08:00
就是 referrence,代表引用,又因为“引用”概念宽泛,实际代表的含义取决于各场景实际所需
liuy1994g
2021-04-07 16:17:18 +08:00
“引用”
IsaacYoung
2021-04-07 16:17:29 +08:00
ref = {current: any}
liuy1994g
2021-04-07 16:17:58 +08:00
在原生 dom 上用获取该 dom,在组件上用获取该实例
momocraft
2021-04-07 16:22:35 +08:00
一個 callback 函數或對象 box
react 完成渲染後把相關對象 (dom element 或 class component) 傳進去, 你去用
Jooooooooo
2021-04-07 16:27:17 +08:00
就是引用的意思 reference
Kasumi20
2021-04-07 16:33:58 +08:00
一个 ObjectWrapper,比如 Java 中的匿名函数访问函数内部的 int 变量时,必须是 final 的,无法修改,但是可以用一个 ObjectWrapper{ public int value }把这个 int 变量包装一下。
nnnToTnnn
2021-04-07 16:52:07 +08:00
好家伙, 吓我一跳, 我以为 html 里面居然有 ref 来取变量, 那岂不是前端要变天, 我一看, w3c 的文档还是老样子.

如果是 react 或则其他三方库 ,ref 表示 这个元素的 引用, 可以通过它来使用真实的 dom 元素的一些方法和属性.
annielong
2021-04-07 18:17:35 +08:00
第三方的库,看第三方的说明,原生 html 没有这个
MeteorCat
2021-04-07 18:26:12 +08:00
react 主要用来标识某个组件,方便直接查找访问
xiaojun1994
2021-04-07 18:35:15 +08:00
引用啊
no1xsyzy
2021-04-07 18:58:04 +08:00
是 React 和 Vue 里类似 getElement(s)By* 或者 Query Selector 的一个东西,但设计上相对更稳健和可预测

一般不推荐大面积用,Vue 的核心思路是自顶向下传递数据用 prop,自底向上传递数据用 event 。
DOLLOR
2021-04-07 19:32:04 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/768757

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX