【发布时间】:2020-02-28 15:11:47
【问题描述】:
我在我的 React 应用程序中的某个时候这样做:
document.getElementById(element).scrollIntoView({ behavior: "smooth" });
作为初学者,我有两个问题:
1) 这在 React 中被认为是不好的做法吗?我应该使用 refs 吗?
2) 我是否在技术上使用这种技术以任何方式修改 DOM?据我所知,我不是,但也许在后台发生了一些我不知道的事情。
【问题讨论】:
-
不好的做法是您将应用程序紧密耦合到使用这些方法可以使用文档的环境。您通常希望将这样的环境假设抽象出来,以便将来证明您的代码,这就是使用 refs 所做的。即使您相当有信心文档将始终存在,这通常也是一个好习惯。没有 scrollIntoView 不会操纵 Dom。
-
因为这里的 DOM 没有发生变异,所以不太可能造成很大的问题。但是是的,使用
refs是正确的方法。 -
非常感谢。所以 refs 更可取,主要是因为它们不假定文档存在?
-
实际上,DOM 正在被操纵,就像
.style.color = "red"操纵 DOM 一样。.scrollTop值正在更改。 -
您仍将在内部使用
refs,但从您的编码角度来看,它们将由组件控制。 IOW:您避免使用refs,因为您有一个集中式组件来处理引用。因此,假设您稍后想将您的应用程序转换为 React Native,不确定,但这可能会使 scrollIntoView 有所不同,那么您有一个要更新的组件,而不是很多页面,您使用了 refs。
标签: javascript reactjs dom