问题标签 [use-ref]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
61 浏览

javascript - 反应:如何获得一个元素高度,消失并以新大小出现

抱歉标题混乱

我正在向论坛添加编辑功能,我需要获取主题的标题元素高度和宽度,以便我单击编辑按钮,组件重新呈现,而不是标题,我们有一个具有标题宽度的文本输入和高度。问题是我只能正确执行一次。如果我在不刷新的情况下第二次编辑并保存,则下一个文本输入具有第一个编辑的标题宽度/高度

这是我的代码:

所以我知道使用 useEffect 的这种方式我只设置了一次 titleSize 状态,我试图直接将 titleSize 属性改变为:

不强制重新渲染,但我得到相同的结果,我可以得到第一次加载的标题元素高度和宽度。

有人知道更好的方法吗?我到达了网络,但不幸的是我没有得到预期的答案(可能是因为我没有使用正确的关键字来获得正确的答案)

任何帮助真的很感激!

0 投票
3 回答
84 浏览

reactjs - 当我需要将引用传递给另一个组件时,如何确保加载它?

我有一个组件,它基本上呈现如下:

我这样做是因为Child' 的渲染逻辑取决于包含 div 的“边界客户端矩形”——子级使用父级的左/上位置来使用 JavaScript 计算自己的绝对位置。通过传入containerRefto Child,我可以访问containerRef.current.getBoundingClientRect()它的各种位置属性。

问题是在初始渲染时,containerRef没有设置。直到第二次渲染才设置。

我该如何 A.) 强制第二次渲染,B.) 强制将其设置在第一次渲染上(可能是不可能的),C.) 以不同的方式解决这个问题,以便孩子可以访问其父母的容器?

也许如果Child在它自己的子 HTML 上设置一个 ref,我可以简单地使用命令式代码来访问该节点的父节点?

0 投票
0 回答
93 浏览

javascript - 如何使用 ref react native 进入屏幕顶部

如何使用 react-native 转到屏幕顶部或屏幕中的其他元素?我需要为此使用 ref 吗?

请注意,我有来自外部的滚动视图,所以我不能使用滚动视图方法

我的代码很少:

例如,我想转到屏幕中的第一个元素:

没有scrollView如何处理?(再次,因为我不能放置滚动视图,因为我有从外部包裹它的滚动视图)

0 投票
3 回答
5707 浏览

reactjs - 反应中循环中的元素的useRef

使用 React,我有一个以这种方式静态声明的 ref 列表:

然后将 refs 传递给动画函数,一切正常;现在事情发生了一些变化,我使用地图创建了列表项,我不再能够正确地引用元素;我试过类似的东西:

但是我传递给动画函数的数组是空的(我猜是因为函数在 useEffect 钩子中被调用,而 LiRefs 还不是 useRef)我也知道

  • 我会创建,所以我可以在开头声明它们,并用类似的东西来引用它们

    哪个不起作用我可以尝试的任何其他解决方案?

  • 0 投票
    1 回答
    49 浏览

    javascript - 反应 useRef 钩子:useRef 值不被 useState 函数使用

    在我问这个问题之前,我自然地做了一个搜索,发现了这个很棒的帖子

    在我解释了一些序言之后,我将在一秒钟内展示我的实现。

    本质上我的问题是 useState 中的更新函数没有同步更新,它在它获得的数据中落后了。

    向 useState 函数传递一个包含 id、lat 和 lang 的对象。

    currentCoords,应该镜像标记数组。如您所见,它是“设置”第二个。

    所以我都知道,因为 setState 和 useState 是异步的,你不能依赖正在更新的状态。

    现在这是我尝试过的:

    我在useEffect依赖项中包含了一个数组,该数组已被字符串化以在它(useMarkers)更改时启动(不用担心数组永远不会超过两个项目!)

    我想通过保存一个显式引用,然后将它传递给可以工作的更新程序,但它没有:(

    这是 setState 函数,将其保存到本地存储:

    0 投票
    1 回答
    760 浏览

    react-native - 如何使用酶模拟 useRef 钩子和 react-native

    我想为我的 React-native 应用程序编写测试。我的父组件将执行子组件中的方法。我的子组件正在使用 Hooks forwardRef、useImperativeHandle、Ref 如下所示

    childs.tsx

    我的父组件正在捕获'ref'调用

    这使我可以从父级中调用“切换”和“关闭”方法。现在,我不明白如何在我的测试中做同样的事情

    我的父母-test.tsx:

    我的 React 和 RN 版本是:

    谁能解释我应该如何实现这一目标?

    0 投票
    1 回答
    275 浏览

    reactjs - 使用 useRef addEventListener

    我正在使用useRefaddEventListener不起作用,这里有什么问题吗?

    父组件:

    子组件:

    0 投票
    6 回答
    6204 浏览

    reactjs - 如果与 setInterval、react-typescript 一起使用,则为 useRef 键入

    我在我的应用程序中做一个简单的动画。

    因为flipInterval.current我得到“类型'超时'不可分配给类型'未定义'”。所以我检查了如何使用 Timeout 类型,我看到人们正在使用但那不起作用。

    useRef<number>()这次我也传递了数字,我得到“类型'超时'不可分配给类型'数字'”

    这也不起作用

    0 投票
    1 回答
    178 浏览

    reactjs - 参考未定义在模态组件材料 ui 中

    我怎样才能防止canvasRef.current在这里未定义?似乎材料 ui 中的模态组件导致画布参考出现问题。我怎样才能防止这种情况发生?我通过设置节点值尝试了 ref 回调canvasRef.current,但仍然没有运气。

    0 投票
    1 回答
    3529 浏览

    html - 如何定义类型

    我正在尝试使用 React.js 中的 ref 来控制视频的播放/暂停状态,我的代码可以工作,但是我正在尝试解决 tslint 错误:

    这会导致

    所以我尝试更改const video = useRef(null)const video = useRef(new HTMLVideoElement())

    我得到: TypeError: Illegal constructor

    我也试过:const video = useRef(HTMLVideoElement) 这导致: