Реагировать на событие JS onClick внутри тега - PullRequest
0 голосов
/ 15 января 2020

У меня есть этот фрагмент кода, который является тегом, в котором есть событие onClick. Моя проблема в том, что когда я нажимаю на div в браузере, запускается href, и я перехожу на другой сайт. Есть ли способ убедиться, что только onClick is triggered when clicking on chnageOrder onClick` и ссылка работает при нажатии на остальную часть тега?

  <div key={idx.toString()}>
    <a className="stage-container" href={stageUrl}>
      <h3>{stage.title}</h3>
      <div className="arrow-container">
        <div
          className=""
          onClick={() =>  
            changeOrder(stage.id, stage.title, stage.order - 1)
          }
        >
          <i className="fa fa-caret-up" />
        </div>
        <div
          onClick={() =>
            changeOrder(stage.id, stage.title, stage.order + 1)
          }
        >
          <i className="fa fa-caret-down" />
        </div>
      </div>
    </a>
    <div className="substages-container">
      {sortSubstages.map((substage, index) => (
        <SubstageItem 
          className="substage-container" 
          key={index.toString()} 
          substage={substage} 
          reload={reload} 
        />
      ))}
    </div>
  </div >

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Попробуйте:

onClick={(e) => {
    e.preventDefault();
    e.stopPropagation();
    changeOrder(stage.id, stage.title, stage.order - 1);
  }
}
0 голосов
/ 15 января 2020

Вы можете использовать PreventDefault, чтобы избежать срабатывания ссылки href. Вы можете взглянуть на https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault

HandleChangeOrder = (event,stageid, stagetitle, stageorder) =>{
event.PreventDefault();
//your changeOrder method instructions
}

//Call
<div className="" onClick={() => changeOrder(this.HandleChangeOrder)}>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...