Как отменить функцию OnClick при втором щелчке в ReactJS

#reactjs #onclick

#reactjs #onclick

Вопрос:

Я закодировал функцию OnClick, которая открывает окно с подробным описанием выбранного объекта.

Однако окно всегда остается открытым, и для его удаления вам необходимо обновить страницу. Я хотел бы убедиться, что при втором щелчке страница возвращается, как и раньше, путем отмены функции, вызываемой при первом щелчке.

    const setActiveTutorial = (tutorial, index) => {
        setCurrentTutorial(tutorial);
        setCurrentIndex(index);
      };

...

                    {tutorials amp;amp;
                      tutorials.map((tutorial, index) => (
                        <TableRow
                          className={
                            "list-group-item "   (index === currentIndex ? "active" : "")
                          }
                          onClick={() => setActiveTutorial(tutorial, index)}
                          key={index}
                        >
                          <TableCell>{tutorial.title}</TableCell>
                          <TableCell>{tutorial.size}</TableCell>
                          <TableCell>{tutorial.country}</TableCell>
...
  

Ответ №1:

Если вы хотите использовать ту же функцию, вы можете просто добавить условие, где if currentTutorial уже имеет значение, тогда оно закрывает страницу

  const setActiveTutorial = (tutorial, index) => {
    if(currentTutorial === tutorial){
      setCurrentTutorial(null)
      set setCurrentIndex(-1) //or whatever initial value
    }
    else{
      setCurrentTutorial(tutorial);
      setCurrentIndex(index);
  };
  

Это предполагает, что вы не можете нажать на другой учебник, пока текущий активен.

Комментарии:

1. Спасибо за ответ. Я хочу, чтобы, если я снова нажму на тот же учебник, окно должно закрыться. Но в то же время я хочу иметь возможность перейти к другому руководству, в этом случае предыдущее должно быть закрыто в любом случае.

2. @GinoPino Я обновил ответ на то, что должно работать.

3. «setIndex» не определен. (нет-undef)

4. @GinoPino извините, должно быть setCurrentIndex