React 组件中的 onClick 问题

Issue with onClick in React component

我有一个包含 div 的搜索结果组件,单击该组件应该会打开一个模式。下面是相关代码:

const createClickableDiv = function(props){
  if(props.searchType === 'option1'){
    return (
      <div onClick={this.onDivClick}>
       <div>Some content</div>
      </div>
    );
  }else if(props.searchType === 'option2'){
    return (
      <div onClick={this.onDivClick}>
       <div>Some other content</div>
      </div>
    );
  }
  return (<div className="result-empty"></div>);
};



class SearchResultItem extends Component{
  constructor(props){
    super(props);
  }
  onDivClick(){
    AppUIActions.openModal((<Modal />));
  }
  render(){
    const clickableDiv = createClickableDiv(this.props);
    return (
      <div>
        {clickableDiv}
      </div>
  }
}

当我加载页面时,没有显示任何内容。但是,当我从 div 中删除 onClick={this.onDivClick} 时,一切都正确呈现,只是没有所需的点击功能。我在 createClickableDiv 函数中的代码周围放置了一个 try-catch,它说 this 未定义。我不太确定从这里到哪里去。

谢谢!

this. 有时会表现得很奇怪。当您的函数 createClickableDiv 被调用时,this 不再引用您的 SearchResultItem,而是引用没有定义函数 onDivClick 的 createClickableDiv。

尝试将函数调用更改为 createClickableDiv(this),以将指针传递给完整的 SearchResultItem, 并将函数本身更改为:

const createClickableDiv = function(caller){
  if(caller.props.searchType === 'option1'){
    return (
      <div onClick={caller.onDivClick}>
       <div>Some content</div>
      </div>
      // etc..

也许这样行得通。