ES6/React第二项绑定失败
ES6/React Second item binding fails
这里有一些组件。父组件(Dropdown)有两个子组件,每个子组件都有一个在Dropdown中激发的单击事件。我对第一次点击事件(handleClick)没有问题,但第二次点击事件的绑定似乎失败了(handleItemClick)
错误:
Dropdown.js:57 Uncaught TypeError: Cannot read property 'handleItemClick' of undefined
父组件(下拉菜单):
export class Dropdown extends Component {
constructor(props) {
super(props);
this.state = { open: false };
this.handleClick = this.handleClick.bind(this);
this.handleItemClick = this.handleItemClick.bind(this);
}
handleClick() {
this.setState({ open: !this.state.open });
}
handleItemClick() {
console.log("anything");
}
render() {
let list = this.props.items.map(function(item) {
return <ListItem item={item} key={item} whenItemClicked={this.handleItemClick}/>
});
return (
<div className="dropdown">
<Button
className="btn-default"
title={this.props.title}
subTitleClassName="caret"
whenClicked={this.handleClick} />
<ul className={"dropdown-menu " + (this.state.open ? "show" : "")}>
{list}
</ul>
</div>
);
}
}
子组件(ListItem),该项对应的点击事件是绑定失败的事件。
export class ListItem extends Component {
render() {
return (
<li><a onClick={this.props.whenItemClicked}>{this.props.item}</a></li>
);
}
}
第二个子组件,该项目对应的点击事件工作
export class Button extends Component {
render() {
return (
<button onClick={this.props.whenClicked} className={"btn " + this.props.className} type="button">
{this.props.title} <span className={this.props.subTitleClassName}>{this.props.subTitle}</span>
</button>
);
}
}
这可能是我忽略的显而易见的事情。如有任何帮助,我们将不胜感激!
map
将把this
绑定到函数调用方,也就是数组。用function () {}
写入的map
中的this
是数组而不是组件。
请使用箭头函数,它将保留"词法"this
,即周围的this
,这是您的组件。
let list = this.props.items.map(item => {
return <ListItem whenItemClicked={this.handleItemClick}/>
});
相关文章:
- 动态地向可观察数组中的特定项添加绑定(例如hasfocus)
- ES6/React第二项绑定失败
- 如何删除WinJS组绑定列表的最后一项
- 如果父项具有onclick绑定,则复选框单击将被忽略
- Knockout Js的自定义绑定处理程序更新依赖项
- jQuery绑定ajax:成功地不在rails3app中为新创建的(ajax)项工作
- 更改铁列表中现有项的绑定属性的值
- 如何通过 KNOCKOUT 的自定义数据绑定使
- 的
- 项最初隐藏
- 将鼠标悬停事件绑定到 jQuery 自动完成项
- 有没有办法将所有双击事件绑定到jQuery / JavaScript中的单击等效项
- 对可观察数组中项的属性进行自定义绑定,如何访问该项
- 具有查询 UI 折叠项的自定义绑定的选项设置
- 使用 jquery 将客户端事件绑定到动态数据列表项
- 使用引导选项卡窗格和折叠项的数据绑定错误
- knockoutjsforeach数组选择项值绑定
- 将事件绑定到AJAX填充的列表项
- 使用Knockout.Js将数组绑定到表,并将数组的一个项绑定到另一个元素
- 如何将菜单项绑定到同一解决方案中的另一个项目
- Knockout Js-将json数组中的单个项绑定到元素
- 使用knockoutJS,如何将列表项绑定到同一个视图