e.target 是可访问的,但 e.target.value 不在 React 组件中
e.target is accessible, but e.target.value is not in React component
我的 React 应用程序遇到了一个奇怪的问题,我无法让我的 deleteTime()
函数工作。我将尝试通过使用e.target.value
从this.state.times
中删除一个元素,这将是我要删除的<li>
的{key}
。value 属性被正确添加到元素中,但我只是无法访问它。我知道这个问题与 MaterializeCSS 有关,因为如果我将元素从<i>
更改为没有图标内容的<button>
,代码就可以工作了。
基本上有两个组件,主App
将所有道具提供给RecentTimes
组件,该组件仅显示格式化如下的时间列表:00 : 00 . 00
以下是App
组件的外观(我删除了所有不相关的东西(:
class App extends React.Component {
constructor() {
super();
this.state = {
times: []
};
}
deleteTime(e) {
console.log(e.target); // <i value="1" class="material-icons right" data-reactid=".0.0.2.0.0.2:$1.1">close</i>
console.log(e.target.value); // undefined
}
render() {
return (
<RecentTimes
times={this.state.times}
deleteTime={this.deleteTime}
/>
);
}
}
我不知道如果e.target.value
显然具有值属性,为什么e.target
未定义。
这是最近时代的组件:
class RecentTimes extends React.Component {
render() {
let icons = 'material-icons right';
let times = this.props.times.map((time, timeIndex) => {
return (
<li key={timeIndex}>
{time}
<i value={timeIndex} onClick={this.props.deleteTime} className={icons}>close</i>
</li>
);
});
return (
<ul>{times}</ul>
);
}
}
使用数据属性
<i data-value={timeIndex} onClick={this.props.deleteTime} className={icons}>close</i>
和
e.target.getAttribute('data-value');
或者浏览器是否支持数据集
e.target.dataset.value
你需要
使用 e.target.id。
class RecentTimes extends React.Component {
render() {
let icons = 'material-icons right';
let times = this.props.times.map((time, timeIndex) => {
return (
<li key={timeIndex}>
{time}
<i id={timeIndex} onClick={this.props.deleteTime} className={icons}>close</i>
</li>
);
});
return (
<ul>{times}</ul>
);
}
}
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 接受不在列表中的值-引导组合框
- 通过链接重定向不;我不在jstree中工作
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 将不在模型中的数据返回到mvc控制器
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 选择不在GridView-ASP.NET中激发
- 如果助手不在,如何从Grunt中的代码中调用任务
- 在输入字段上有两个函数调用,一个在Blur上,一个不在Angular中
- Javascript-在文本区域中断,但不在段落中中断
- 将字符串拆分为;只要它's不在»«
- YouTube作为弹出窗口在桌面版本上播放,但不在移动设备上播放
- Target=_blank don'我不在mozilla和IE工作
- event.target.id 不在火狐上工作
- 为什么我的 event.target 数据在 chrome 中不起作用
- e.target 是可访问的,但 e.target.value 不在 React 组件中
- 为什么是事件.我代码中的Target不能在firefox中运行
- target = _blank>在IE11中不支持iFrame
- Event.target.id在firefox中不起作用