我想在安装后设置音频元素的音量。
如果我在 DOM 节点上有一个没有条件渲染的引用,我可以依赖在第一个 useEffect 运行后定义的该引用的值吗?
function Component() {
const ref = React.useRef();
React.useEffect(() => {
// Can ref.current ever be undefined here?
ref.current.volume = 0.4;
}, []);
return <audio src="..." ref={ref} />
}
我见过很多人将 if 语句和 refs 的可选链接放入 useEffect 中。如果没有条件渲染,那还有必要吗?
refs
已设置during https://beta.reactjs.org/learn/manipulating-the-dom-with-refs#when-react-attaches-the-refs 提交阶段:
React 在提交期间设置 ref.current。在更新 DOM 之前,
React 将受影响的 ref.current 值设置为 null。更新后
DOM,React 立即将它们设置到相应的 DOM 节点。
And useEffect
runs after https://reactjs.org/docs/hooks-reference.html#useeffect 提交阶段:
传递给 useEffect 的函数将在渲染完成后运行
致力于屏幕。将效果视为逃生口
React 的纯函数式世界进入了命令式世界。
所以假设你实际上在 UI 上渲染了该元素,ref.current
应该指的是DOM节点内部的效果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)