- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设你有这个 JSX:
<div ref={this.divRef}>
<SomeComponent />
</div>
你想获取裁判的名字并将其添加到你的状态中,你会怎么做?
类似于:
componentDidMount() {
// get all the positions of the current sections
if (this.divRef.current) {
this.setState({
breakpoints: [{
name: this.divRef.current.name,
position: this.divRef.current.getBoundingClientRect().bottom,
}],
}, () => {
// tslint:disable-next-line:no-console
console.log(this.divRef.current, 'this.divRef.current')
})
}
}
最佳答案
在您的评论中:
I want to assign each ref a name so I can use it later on
如果您真的是指 ref,我能想到的唯一可靠方法是使用由 ref 键控的 WeakMap。 (尽管您可以使用以符号命名的属性,更多内容见下文。)
在你的构造函数中创建 WeakMap(或者在你的模块中,我不知道需要多少代码才能使用这些名称);
this.nameMap = new WeakMap();
然后当您需要获取/分配名称时:
let name = this.nameMap.get(this.divRef);
if (!name) {
name = "some appropriate name";
this.nameMap.set(this.divRef, name);
}
您可以使用以符号命名的属性,将名称存储在 ref 对象本身上,但通常将任意属性存储在您的代码无法控制的对象上并不是一个好主意。但为了完整起见,您将在构造函数(或模块)中创建符号:
this.nameKey = Symbol("refname");
然后使用它:
// I don't recommend this
let name = this.divRef[this.nameKey];
if (!name) {
name = "some appropriate name";
this.divRef[this.nameKey] = name;
}
但我不推荐它。具有 Symbol 的环境也将具有 WeakMap,我将在此处使用它。
但是,如果您指的是 ref 当前所指的元素,则可以使用 data-*
attribute为此:
// Assuming you've checked that `current` isn't `null`
let name = this.divRef.getAttribute("data-name");
if (!name) {
name = "some appropriate name";
this.divRef.setAttribute("data-name", name);
}
如果您可以假设dataset
支持,您可以使用dataset
相反:
// Assuming you've checked that `current` isn't `null`
let name = this.divRef.dataset.name;
if (!name) {
name = "some appropriate name";
this.divRef.dataset.name = name;
}
也就是说,WeakMap 解决方案对元素和 refs 一样有效:
let name = this.nameMap.get(this.divRef.current);
if (!name) {
name = "some appropriate name";
this.nameMap.set(this.divRef.current, name);
}
关于javascript - 你如何获得裁判的姓名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59530724/
我正在使用 ajax 实时搜索来选择名称和姓氏的串联与输入的文本匹配的所有用户,并且效果很好: $sql = "SELECT * FROM users WHERE concat(name,' ',su
我尝试建立一个注册表单。该注册表单为名为“address1”的文本框,其附近有一个名为“Add Address”的按钮。该按钮的功能 - 添加更多地址的文本框。先前地址框附近的按钮更改为“删除”,从而
我一直在尝试制作一个验证电话号码和姓名的表单,但无论何时输入提交,无论字段是否填写,它都只会输入相同的消息。消息不断出现,我想不通 预计到达时间:http://jsfiddle.net/6W3uU/
我正在寻找验证 上的姓名和电子邮件输入的代码 我希望用户名只有 A-Z , a-z并且必须有一个下划线 _ , 电子邮件应该有一个 @ .我怎样才能用 jQuery 做到这一点? 表格(示例):
我在db中有一个带有id,name和parent的部门表.parent是与父root对应的id。现在我已经显示了id(父id),但是我想显示与之对应的部门的名称我已经在Departmentcontro
我正在尝试显示平均分最高的 worker 的姓名。我的第一个表是 worker 表并存储 worker_id 和 worker_name。第二张表是测试表,存储了参加测试的worker_id、test
用什么方法或变量可以找到本例中父对象的名称?也就是说,当鼠标悬停在第一个按钮上时,获取名称 $GetParentName = "Button01",第二个 $GetParentName = "Butt
我有一个数据库,其中一个表中有父名称。列:id、名称。以及其他表中的id、parent_id、name。在搜索字段中我输入名称。更不用说鲍勃、爱丽丝和汤姆了。我必须在数据库中搜索 child 名为鲍勃
我有以下查询: SELECT ty.id, ty.type, ty.pid, if(ty.pid = 0, '-', (select ty.type from bid_type ty w
我有一个如下所示的数据库: CREATE TABLE Persons ( id int, parentID int, name varchar(255) ); INSERT I
我无法获得预期的结果我希望我的程序显示任何人都可以帮助我。该程序用于打印结构中列出的 worker 姓名,如果您不输入任何这些姓名,我应该打印不存在的 worker 姓名。有人可以告诉我要使用的代码/
我正在读取 JSON 对象并以表格格式名称和文本在 html 中显示它们,但无法使用 javascript 获取节点的父名称 { "A": { "B": "Text",
当用户在我的 iPad 报亭应用上购买杂志订阅时,他们会收到分享一些信息的提示: 分享您的信息? [此处的应用名称] 的发布者希望根据他们的隐私政策使用您的姓名、电子邮件和邮政编码。 但是,我似乎无法
我有一大堆电子邮件,需要从中提取信息。我最近接手了一个网站,该网站将客户的所有联系信息存储在电子邮件中。他们想要开始将其存储在数据库中。我正在使用 Java 来尝试提取这些信息。我有点陷入困境。 我能
我有一个使用 qbXml 和 Intuit Web 连接器与 QuickBooks 同步的应用程序。 我在查询帐户时注意到一些异常行为。根据规范,一个帐户的全名应该包括它的任何祖先的名字,用冒号分隔。
下面是一个更大的数据框的示例。 Fare Cabin Pclass Ticket Name 257 86.5000 B77 1 110152
我在我的 Program.cs 文件中有一个方法要实现。当该方法遍历作业列表(其中每个作业都是一个字典)时,它应该打印: ***** name: Data Scientist / Business I
如何从包含三列的表格中查找第二高薪水,这些列是id、name、 salary,但在SELF JOIN中使用。通过嵌套查询得到答案。但是,我想知道我们如何使用 SELF JOIN 构建框架 最佳答案 如
我想在 WooCommerce 中运行 SQL 查询来选择所有没有订单、姓名、实际地址和电话号码的用户。我已经运行了以下代码,但它对我不起作用。 SELECT * FROM wp_usermeta
给定(例如): Dog breeds (Name) | id Labrador Retriever | A1 German Shepherd | A2 Golden Retriever |
我是一名优秀的程序员,十分优秀!