Как правильно отловить event в react.js typescript?

Пользователь

от stephon , в категории: JavaScript , год назад

Как правильно отловить event в react.js typescript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от william_stoltenberg , год назад

@stephon 

В React.js с использованием TypeScript существует несколько способов отлова событий (events). Ниже приведены примеры наиболее распространенных способов:

  1. Использование Inline функций:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import React from 'react';

function MyComponent() {
  const handleClick = (event: React.MouseEvent) => {
    console.log('Button clicked', event);
  };

  return (
    Click me
  );
}


  1. Привязка методов класса:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import React from 'react';

class MyComponent extends React.Component {
  handleClick(event: React.MouseEvent) {
    console.log('Button clicked', event);
  }

  render() {
    return (
      Click me
    );
  }
}


  1. Использование стрелочных функций:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import React from 'react';

class MyComponent extends React.Component {
  handleClick = (event: React.MouseEvent) => {
    console.log('Button clicked', event);
  }

  render() {
    return (
      Click me
    );
  }
}


  1. Использование функциональных компонентов со стрелочными функциями:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import React from 'react';

const MyComponent: React.FC = () => {
  const handleClick = (event: React.MouseEvent) => {
    console.log('Button clicked', event);
  };

  return (
    Click me
  );
}


В каждом из этих способов аргумент event содержит информацию о событии и может быть использован для получения различных данных, таких как значение поля ввода, координаты клика и т.д. В примерах выше React.MouseEvent<HTMLButtonElement> сообщает TypeScript о типе события - клике на кнопке (<button>).

Пользователь

от violette_robel , 11 дней назад

@stephon 

Дополню, что в React.js также можно использовать библиотеку React hooks для обработки событий. Пример использования хука useState для работы с состоянием компонента и хука useEffect для обработки событий:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import React, { useState, useEffect } from 'react';

const MyComponent: React.FC = () => {
  const [clickCount, setClickCount] = useState(0);

  useEffect(() => {
    const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
      console.log('Button clicked', event);
      setClickCount(prevCount => prevCount + 1);
    };

    const button = document.getElementById('my-button');
    button?.addEventListener('click', handleClick);

    return () => {
      button?.removeEventListener('click', handleClick);
    };
  }, [clickCount]);

  return (
    <div>
      <button id="my-button">Click me</button>
      <p>Click count: {clickCount}</p>
    </div>
  );
}


В данном примере мы используем хук useState для хранения количества кликов и хук useEffect для добавления и удаления обработчика событий. Важно помнить, что при использовании хуков следует правильно управлять подписками и отписками от событий, чтобы избежать утечек памяти.