javascript - 这个范围在一个简单的 React 组件中

标签 javascript reactjs

当涉及到我的过滤器组件中的 this.onItemClick 时,我认为范围有问题。

出现错误“onItemClick 未定义”。

这是过滤器组件的代码。

var Filter = React.createClass({
getDefaultProps() {
    return {
      filterList: [],
      name: ''
    };
},
onItemClick(event) {
    event.currentTarget.style.backgroundColor = '#f00';
},
render() {
    return (
        <div className="filterCloud quarter-section">
            <h3>{this.props.name}</h3>
            <ul>
              {this.props.filterList.map(function(listValue) {
                  return <li onClick={this.onItemClick}>{listValue}</li>;
              })}
              </ul>
        </div>
    )
}});

最佳答案

您应该为 .map 设置 this回调,因为现在 this 指的是全局范围(在浏览器中它是 window,或者 undefined 如果你使用 strict mode )

this.props.filterList.map(function(listValue) {
   return <li onClick={this.onItemClick}>{listValue}</li>;
}, this);
   ^^^^^

关于javascript - 这个范围在一个简单的 React 组件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38242895/

相关文章:

javascript - 正则表达式匹配当前 URL 中的字符串(包括通配符)

javascript - 复选框 onclick 仅在刷新 React js 后更改

css - 更改 react 表中的列宽

reactjs - react 渲染后为空组件

javascript - Node/Express/Request - 尝试使用参数代理 POST 请求会抛出 "Write after end"

javascript - 我无法使用 .load() jquery 返回上一页

javascript - 用自己的实现替换 npm 包

javascript - 防止多次执行JS函数/表单提交

reactjs - 可以篡改 react 状态以绕过安全措施吗?

reactjs - React 惰性组件未加载到动态路由上