代码之家  ›  专栏  ›  技术社区  ›  8-Bit Borges

ReactJS-在click上处理两个函数

  •  0
  • 8-Bit Borges  · 技术社区  · 4 年前

    App.jsx 我有以下功能:

    import { Position } from "./Position";
    ...
    
    getPositionData = val => {
        const { players } = this.props;       
        var res = players.filter(o=>Object.values(o).includes(val))        
        return res
      };
    

    正在处理 render() <div> ,如下所示:

    <div className="field-row"> 
       {this.getPlayersByPosition(players, 4).map((player,i) => (
          <Position key={i} handleClick={this.getPositionData}>{player.name}</Position>
        ))} 
    </div>
    

    Position.jsx 把手 onClick()

    export const Position = props => (
      <div
        className={`position-wrapper ${
          isManager(props.children) ? null : "field"
        }`}
        onClick={() => props.handleClick(props.children)}
      >
        {props.children}
      </div>
    );
    

    但是现在我想处理第二个函数 < 单击,例如:

     toggleFullScreen() {
        this.setState({ fullScreen: !this.state.fullScreen });
      }
    

    我会自己通过,就像这样:

    onClick={this.toggleFullScreen.bind(this)}
    

    如何处理这两个功能 onClick()

    <div className="field-row"> 
    ...
    </div>
    

    ?

    1 回复  |  直到 4 年前
        1
  •  5
  •   CertainPerformance    4 年前

    element.addEventListener('click', () => {
      fn1();
      fn2();
    });
    

    您可以通过定义 onClick

    <Position
      key={i}
      getPositionData={this.getPositionData}
      toggleFullScreen={toggleFullScreen}
    >{player.name}</Position>
    
    export const Position = props => (
      <div
        className={`position-wrapper ${
          isManager(props.children) ? null : "field"
        }`}
        onClick={() => {
          props.getPositionData(props.children);
          props.toggleFullScreen();
        }}
      >
        {props.children}
      </div>
    );