ReactJS无法读取属性' bind'未定义的

时间:2016-01-17 18:36:49

标签: javascript reactjs

我正在尝试通过制作一些简单的应用程序来学习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;
&#13;
&#13;

1 个答案:

答案 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);
__^^^^^^

Example