react点击问题

IT技术 javascript onclick reactjs
2021-05-16 02:17:42

我是 React 的新手,我正在尝试将 onClick 事件连接到图像以查看被按下但没有使其工作的对象,我已经尝试了我在本网站上找到的几个答案,但没有任何效果,可能是因为“var createItem”?

/** @jsx React.DOM */

var React = require("react");
var Firebase = require("firebase");


// CHILD
var CardsList = React.createClass({
    render: function() {
       var createItem = function(card, index) {
           return <div id='card' key={ index }><img onClick={ this.props.onClick.bind(null, this)  } src=        { card.url }/></div>;
    };
    return <div id='cards'>{ this.props.cards.map(createItem) }</div>;
    }
});


//PARENT
var DeckCalculator = React.createClass({
    getInitialState: function() {
        this.cards = [];
        this.userCards = [];
    return {cards: [], name:"default", url:"defaultURL"};
},
    handleOnAdd: function(component, event){
        // Add the clicked card to userCards[]
    },
    render: function() {
    return (
      <div>
        <h3>All Cards</h3>
        <CardsList onClick={ this.handleOnAdd } cards={ this.state.cards } />
      </div>
   );
   }
});

此代码给出了错误:未捕获的类型错误:无法读取未定义的属性“onClick”

1个回答

createItem有错误的上下文。

var createItem = function(card, index) {
  return (
    <div id='card' key={index}>
      <img onClick={this.props.onClick.bind(null, this)} src={ card.url } />
    </div
  );
}.bind(this);

注意.bind(this)最后。

有关原因this(哈哈)的更多信息,请查看这篇文章https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this