javascript - react onClick 不触发功能

标签 javascript reactjs

我有这个子组件,它生成列表元素,其中包含一个图像和一个标签内的 2 个图标。

return <li><img src={bild[1]} alt="" /><span>{bild[2]}</span><a onClick={this.showBild} href="#"><i className="fa fa-eye"></i></a><a href="#"><i className="fa fa-trash-o"></i></a></li>

这个返回是从父组件传递过来的prop的map函数的返回。

不知何故,onClick 事件没有触发我的 showBild 函数。

我错过了什么吗?

这是我的整个 react 代码,包括父组件和子组件(showBild 类可以忽略)

<script type="text/jsx">
  var Bilder = React.createClass({
    getInitialState: function() {
      return {
        data:[
                ['1', 'http://localhost/foodoo/app/public/imgs/aichl.jpg', 'name.jpg'],
                ['2', 'http://localhost/foodoo/app/public/imgs/aichl.jpg', 'name.jpg'],
                ['3', 'http://localhost/foodoo/app/public/imgs/aichl.jpg', 'name.jpg'],
                ['4', 'http://localhost/foodoo/app/public/imgs/aichl.jpg', 'name.jpg'],
                ['5', 'http://localhost/foodoo/app/public/imgs/aichl.jpg', 'name.jpg']
            ],
        currentPic:[],
        display:'showBild clearfix dn'
      };
    },
    bild: function(){

    },
    render: function() {
      return (
        <div>
          <SingleBild data={this.state.data} chosenBild={this.bild} />
          <BildDetail data={this.state.currentPic} display={this.state.display} />
        </div>
      );
    }
  });

  var SingleBild = React.createClass({
    getInitialState: function() {
      return {
        bild:[]
      };
    },
    showBild: function(e){
      e.preventDefault();
      alert("yolo");
      this.props.chosenBild(this.state.bild);
    },
    render: function() {
      var displayBild = function(bild){
             return <li><img src={bild[1]} alt="" /><span>{bild[2]}</span><a onClick={this.showBild} href="#"><i className="fa fa-eye"></i></a><a href="#"><i className="fa fa-trash-o"></i></a></li>
      };
      return (
        <ul className="dashboardUl bilder clearfix">
          <h2>Gemeldete Bilder:</h2>
          {this.props.data.map(displayBild)}
        </ul>
      );
    }

  });

  var BildDetail  = React.createClass({

    render: function() {
      return (
        <div className={this.props.display}>
          <img src={this.props.data[1]} alt="" />
          <ul>
            <li><a href="#"><i className="fa fa-trash-o"></i></a></li>
            <li><a href="#"><i className="fa fa-ban"></i></a></li>
          </ul>
        </div>
      );
    }

  });


  React.render(<Bilder />, document.getElementById('bilder'));
</script>

最佳答案

BildDetailrender方法中,您应该引用this关键字或绑定(bind)它。例如:

 render: function() {
  var self = this;
  var displayBild = function(bild){
         return <li>...<a onClick={self.showBild} ....</a></li>
  };
  return (
    ....
  );
}

或者您可以绑定(bind)它:

render: function() {
  var displayBild = function(bild){
         return <li>...<a onClick={this.showBild} ....</a></li>
  }.bind(this);
  return (
    ....
  );
}

关于javascript - react onClick 不触发功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31277405/

相关文章:

javascript - 自动检测货币 PHP/Javascript

javascript - 特定断点处的 Bootstrap 崩溃

javascript - 谷歌脚本; for循环中的函数停止它

javascript - Admin-on-rest 是否提供日期范围选择器

javascript - 使用 Auth0 和客户端 Node.js 服务器在 SPA 中进行身份验证

javascript - 为什么我的 jQuery .ajax() 路由的 .done() 方法在我的 NodeJS、Express 和 Mongoose 项目中没有触发?

javascript - Webpack 不会将我使用的图像复制到 react 组件中

javascript - 在有滚动条的侧边栏外显示下拉菜单,但仍与 anchor 处于相同位置

javascript - 如何在 Webpack 4 中转译 JSX

reactjs - 无法安装@material-ui/pickers(ERESOLVE无法解析依赖关系树)