Почему мое событие onClick работает с двойным щелчком, а не с одиночным щелчком?

Я фактически конвертирую сайт на основе HTML для сайта на основе реакции, и в этом случае я внес необходимые изменения, но, похоже, проблема с событием щелчка. Это правильный способ сделать это? если нет, что еще можно сделать?

      import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';

function App() {
<div className="experience">
                <div className="role">
                  <p>Mar 2021 – May 2021</p>
                  <KeyboardArrowDownIcon className="down-arrow" onClick={dropdown} />
                  <p className="res">abc</p>
                  <p><a className="company" href="#"> xyz</a>| California, USA</p>
                </div>
                <div className="details">
                  <p>
                    Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500.
                  </p>
                </div>
    </div>

    const dropdown = () => {
        let roles = document.querySelectorAll('.role');
        let details = document.querySelectorAll('.details');
        let arrows = document.querySelectorAll('.down-arrow');
    
        for (let i = 0; i < roles.length; i++) {
          roles.item(i).addEventListener('click', function () {
            if ((details.item(i).style.display === 'none') || (details.item(i).style.display === '')) {
              for (let j = 0; j < roles.length; j++) {
                if (details.item(j).style.display === 'block') {
                  details.item(j).style.display = 'none';
                  arrows.item(j).style.transition = '.25s';
                  arrows.item(j).style.transform = 'rotate(0deg)';
                }
              }
              details.item(i).style.display = 'block';
              arrows.item(i).style.transition = '.25s';
              arrows.item(i).style.transform = 'rotate(180deg)';
            } else {
              details.item(i).style.display = 'none';
              arrows.item(i).style.transition = '.25s';
              arrows.item(i).style.transform = 'rotate(0deg)';
            }
          });
        }
      }
}
export default App;

css:

      .details{
display:none;
}

Я добавил событие onClick к значку стрелки, но мне нужно щелкнуть значок стрелки 2 раза, чтобы это событие сработало. Я не могу решить эту проблему. Как это решить?

0 ответов

Другие вопросы по тегам