@uzi_no_uzi

Почему событие срабатывает не правильно?

Имеется вот такой React компонент:

import React from 'react';

import './AppSearch.css'

class AppSearch extends React.Component {

	constructor() {
		super();

		this.state = {
			request: '',
		}

		this.onSearch = (e) => {
			this.setState({
				request: e.target.value,
			})
			console.log(this.state.request);
		}

	}

	render () {
		return(
			<input className='AppSearch' value={this.state.request} onChange={ this.onSearch } placeholder = 'Search parametr' />
		)
		
	}
};

export default AppSearch;


По как-то причине событие onChange работает не правильно. Не могу разобраться почему.

Функция onSearch сначала меняет request, а потом только выводит это значение, а получается так, как-будто оно работает наоборот:

5bf142db74055656563235.jpeg

На скриншоте видно, что я ввел три двойки, а в консоли их только две. С чем это может быть связано?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Во-первых, события не срабатывают - никакие и никогда. Срабатывают обработчики событий. Во-вторых - между "неправильно" и "не так, как мне бы хотелось" есть существенная разница, попытайтесь её осознать.

Метод setState - асинхронный. Хотите получить доступ к изменённому стейту - используйте коллбек:

this.setState({
  request: e.target.value,
}, () => console.log(this.state.request))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект