javascript - 如何在 Material Design React 中使用数据属性?
问题描述
我最近开始使用 Material Design React,但我刚刚发现 data-someField 确实将值传播到数据集映射。
例子:
<Input data-role=‘someValue’ onChange={this.onChange} />
onChange = e =>{
const role = e.target.dataset.role
const role2 = e.currentTarget.dataset.role
}
onChange 处理程序中的两个角色都未定义。如果我将 Input 标记更改为常规 html 输入,则不会发生这种情况。
任何想法为什么 Material Design 不允许数据属性或者是否有任何解决方法?
先感谢您!
--- 在@Springer 建议之后,我尝试使用 inputprops,但注意到只有 name 属性可用,其余的未定义。
``` <Input
value={role.name}
disabled={!this.state.editMode}
inputProps={{
name: 'MyName',
role: 'MyRole',
dataset: {
degree: 'Teniente'
},
data: {
roleId: role.uuid
},
dataRoleId: {
roleId: role.uuid
}
}}
disableUnderline={true}
data-role-id={role.uuid}
role={role}
onChange={this.onChangeExistingRole}
/> ```
解决方案
在反应材料 api 中,他们使用inputProps
传递提取对象(道具,数据..)
见文档
inputProps :应用于输入元素的属性。
例如,要添加角色数据属性,您应该将inputProps
数据角色选项()添加到道具中'data-role':'roleAttrib'
,输入应如下所示:
<Input value={role.name}
disabled={!this.state.editMode}
inputProps={{
name: 'MyName',
'data-role':'role' // <------- add data attribute like this
...
}} />
推荐阅读
- scala - 为什么 Scala 加载命令在 Windows 10 命令提示符下的 REPL 中不起作用?
- c# - 在我的 DbContext 上使用 .Include() 方法时出现网络错误
- unity3d - unity fps 跳跃与角色控制器
- laravel - laravel 5.2 在所有控制器中传递变量
- javascript - 使用相同的 HTML 模板/文件时重定向到不同的页面?
- swift - UICollectionView 在屏幕旋转时调整大小
- flutter - 如何使用 Flutter 获取 SIM、配置、位置、网络信息
- ruby-on-rails - Rails 6 devise_ldap_authenticable 保存具有不同用户名大小写的重复用户
- javascript - 用于项目活动状态的 Bootstrap 4 自定义导航栏
- ios - send_keys() 方法不适用于在 iPhone 模拟器上输入密码