Статьи

Пример использования ReactJS setState

ReactJS выросла в популярности и является одним из наиболее часто используемых фреймворков. В этой статье мы рассмотрим метод setState ReactJS. В более ранних версиях функция состояния React была ограничена компонентами, реализованными с использованием классов ES6. Но теперь с введением хуков даже функциональные компоненты могут иметь состояние. Мы рассмотрим оба случая и то, как мы должны изменить состояние, используя функцию setState и ее различные варианты.

В этой статье я создам простое приложение React, используя пакет create-реагировать-приложение от команды ReactJS. Инструменты и структуры, используемые для реализации этого примера, следующие. Некоторые из них являются обязательными, в то время как другие могут быть заменены вашими избранными.

1. Начальная настройка

Мы начинаем с запуска команды ниже. Это создает начальную структуру и конфигурацию нашего примера приложения.

1
>npx create-react-app my-app .

После выполнения этой команды наше приложение должно быть готово. Структура папок должна напоминать снимок экрана ниже:

ReactJS setState - структура приложения
Структура приложения

2. Состояние в компоненте класса

Давайте создадим наш первый компонент с именем ClickCounter в файле с таким же именем. Мы используем конструкцию класса ES6 для создания нашего компонента. Этот компонент отображает пару кнопок и диапазон. При нажатии на одну из кнопок счетчик обновляется и счетчик отображается в промежутке. При нажатии другой кнопки мы сбрасываем счетчик на ноль.

Код для нашего компонента выглядит следующим образом. Мы храним счетчик в состоянии, которое является внутренним для компонента. По щелчку мы обновляем состояние, используя версию setState, которая принимает обратный вызов и передает ему предыдущее состояние и поддерживает в качестве параметров.

ClickCounter.js

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import React from 'react';
 
class ClickCounter extends React.Component {
    constructor(props) {
        super(props);
        this.state = { count: 0 };
    }
    render() {
        return <>
            <span>Button clicked {this.state.count} times!
                </span>
            <button onClick={this.handleClick}>Click Me</button>
            <button onClick={this.resetCounter}>
                 Reset Counter</button>
        </>;
    }
    resetCounter = () => {
        this.setState({ count: 0 });
    }
    handleClick = () => {
        this.setState((state, props) =>
            ({ count: state.count + 1 }));
    }
}
export default ClickCounter;

Как вы можете видеть, мы использовали версию обратного вызова setState в обработчике handleClick. Мы используем значение счетчика в предыдущем состоянии, чтобы создать новое состояние. Это приводит к обновлению нашего компонента, и он отображается заново. Точно так же в обработчике нажатия кнопки сброса мы используем версию setState, чтобы сбросить счетчик до нуля. Далее давайте реализуем то же самое, используя функциональные компоненты и хуки.

3. Состояние в компонентах функций

Теперь давайте реализуем компонент, который мы написали выше, как компонент функции. Мы создаем отдельный файл с именем ClickComponentFunc.js для этого компонента. Чтобы разрешить использование состояния с этим компонентом, мы дополнительно импортируем хук useState из реакции. Мы используем его следующим образом для создания счетчика свойств в состоянии:

1
const [count, setCount] = useState(0);

И вот как мы можем использовать состояние в компоненте функции. Переменная count может использоваться для доступа к свойству состояния, а setCount может использоваться для установки значения свойства count. Полный код для нашего функционального компонента выглядит следующим образом

ClickComponentFunc.js

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
import React, { useState } from "react";
 
export default function ClickCounterFunc(props) {
 
    const [count, setCounter] = useState(0);
    const updateCounter = () => {
        setCounter(count + 1);
    };
    const resetCounter = () => {
        setCounter(0);
    };
    return <>
        <span>Button clicked {count} times!</span>
        <button onClick={updateCounter}>Click Me!</button>
        <button onClick={resetCounter}>Reset Counter</button>
    </>;
 
}

В следующем разделе мы запустим наше приложение и увидим результаты.

4. Запуск приложения

Чтобы запустить приложение и увидеть результаты, мы запускаем следующую команду в корне нашего приложения.

1
>npm start

Эта команда запускает наше приложение и открывает его в браузере по умолчанию по адресу http: // localhost: 3000. Результат выглядит как ниже

Выход проекта

5. Загрузите исходный код

Скачать
Вы можете скачать полный исходный код этого примера здесь: ReactJS setState Example