Задать вопрос
Ответы пользователя по тегу JavaScript
  • Почему onClick срабатывает два раза?

    suprunchuk
    @suprunchuk
    В React 18 при использовании режима Strict Mode компонент монтируется дважды в development среде - это ожидаемое поведение для выявления потенциальных проблем.

    Вот несколько решений:
    Самое простое - убрать StrictMode в index.js:

    ReactDOM.createRoot(document.getElementById('root')).render(
      <App />
    );


    Лучшее решение - оставить StrictMode и оптимизировать компонент с помощью useCallback:

    const Button = ({info, id}) => {
      const btn = useCallback((id) => {
        setTodo(prevTodo => prevTodo.map(item => {
          if(item[0] === id) {
            return [...item.slice(0,6), !item[6], ...item.slice(7)];
          }
          return item;
        }));
      }, []);
    
      return (
        <button 
          className={`icon ${info ? 'icon-play' : 'icon-pause'}`}
          onClick={() => btn(id)}
        />
      );
    }
    Ответ написан
    Комментировать