我正在尝试通过制作一些简单的应用程序来学习reactjs。我以为我已经找到了基础知识,直到我偶然发现我使用.bind的情况。我正在尝试创建一个小列表,单击该列表将删除单击的列表项。它背后的逻辑尚未实现,因为我一直遇到同样的错误。我已经查看了其他问题,但由于某些原因我无法设法使其正常工作,所以如果重新发布,我很抱歉。
"Cannot read property 'bind' of undefined"
有问题的代码在下面实现。我真的很感激一些帮助。我知道这是一个非常基本的问题,但是嘿。永远不会是完美的。
var React = require("react");
var ReactDOM = require("react-dom");
var dataList = ["Apples","Bananas", "Oranges", "Pinapple"];
var Wrapper = React.createClass({
handleClick: function(item, event) {
console.log("clicked");
},
render: function() {
var allData = this.props.datalist;
return(
<div>
<ul>
{allData.map(function(listpoint,i) {
return(
<li onClick={this.handleClick.bind(this,listpoint)} key={"list" + i}>{listpoint} [{i}]</li>
);
})}
</ul>
</div>
);
}
});
ReactDOM.render(
<Wrapper datalist={dataList}/>,
document.getElementById("container")
);
&#13;
答案 0 :(得分:7)
您应为this
设置.map
,因为this
回调中的.map
未引用Wrapper
,它指的是全局范围(在浏览器中)是窗口)或者如果你使用严格模式,它将是undefined
allData.map(function(listpoint,i) {
return <li
onClick={this.handleClick.bind(this,listpoint)}
key={"list" + i}>{listpoint} [{i}]</li>;
}, this);
__^^^^^^