Приложение React Counter, реализованное двумя методами: React Hook и useReducer
Большинство разработчиков внешнего интерфейса используют React, потому что это библиотека JavaScript для создания интерактивных пользовательских интерфейсов. Одной из причин создания приложения-счетчика является тот факт, что это служебное приложение, которое ведет подсчет значений и отображает общее значение. Наше приложение Counter будет иметь следующие функции:
я. Кнопка увеличения: она увеличит количество на единицу
ii. Кнопка уменьшения: это уменьшит количество на единицу
III. Кнопка сброса —установит счетчик на 0
iv. Кнопка «Установить значение»n – будет отображаться любое введенное значение
в. Поле ввода –для ввода значения
МЕТОД 1: СОЗДАНИЕ ПРИЛОЖЕНИЯ СЧЕТЧИКА С ИСПОЛЬЗОВАНИЕМ пользовательского хука
ШАГ 1. Создайте новое приложение React
npx create-react-app counter-app cd counter-app npm start
Мы создадим наше приложение счетчика, используя приведенную выше командную строку. npx — это средство запуска пакетов, которое поставляется с npm, что позволяет пользователям запускать любой пакет напрямую без установки.
Команда cd изменяет рабочий каталог на Counter .
Команда npm start открывает новую вкладку и запускает проект на локальном хосте http://localhost:3000.
ШАГ 2. Создайте компонент Custom Hook
import { useState } from "react"; export const useCounter = () => { const [counter, setCounter] = useState(0); const value = parseInt(counter); const increment = () => { return setCounter(value + 1); }; const decrement = () => { return setCounter(value - 1); }; const reset = () => { return setCounter(0); }; const setCount = (val) => { return setCounter(val); }; return [increment, decrement, reset, setCount, counter]; };
Мы объявим начальное состояние счетчика с помощью useState. Мы бы установили начальное состояние на ноль и добавили бы функциональность в Increment, Decrement, Reset и setCount.
Пользовательские хуки — это многократно используемые функции, которые разработчик программного обеспечения React JS может использовать для добавления специальных и уникальных функций в приложения React.
ШАГ 3. Импортируйте компонент Custom Hook в компонент приложения
import React from "react"; import { useCounter } from "./customCounterHook"; export default function CounterApp() { <div> Counter App </div> }
Внутри файла src/App.js мы импортируем компонент Custom Hook, созданный на предыдущем шаге.
ШАГ 4. Импорт состояния и объявление состояния в приложении счетчика
import React from "react"; import { useCounter } from "./customCounterHook"; import { useState } from "react"; function CounterApp() { const [inputVal, setInputVal] = useState(0); const handleChange = (e) => { setInputVal(e.target.value); }; const [increment, decrement, reset, setCount, counter] = useCounter();
Мы объявим inputVal и setInputVal и установим их в useState (0), это будет содержать начальное значение отображения счетчика.
Мы устанавливаем SetInputVal для любого значения, введенного в поле ввода.
ШАГ 5: Добавьте кнопки и поле ввода
return ( <button onClick={increment}> + </button> <button onClick={decrement}> - </button> <button onClick={reset}> Reset </button> <input type="number" aria-label="value" onChange={handleChange} value={inputVal} /> <button onClick={() => setCount(inputVal)}> Set value </button> );
Следующим шагом является добавление кнопок и поля ввода, где мы можем ввести значение.
Свойство события onClick добавляет прослушиватель событий щелчка и делает кнопки функциональными.
ШАГ 6. Окончательный код
import React from "react"; import { useCounter } from "./customCounterHook"; import { useState } from "react"; function CounterApp(){ const [inputVal, setInputVal] = useState(0); const handleChange = (e) => { setInputVal(e.target.value); }; const [increment, decrement, reset, setCount, counter] = useCounter(); return ( <button onClick={increment}> + </button> <button onClick={decrement}> - </button> <button onClick={reset}> Reset </button> <input type="number" aria-label="value" onChange={handleChange} value={inputVal} /> <button onClick={() => setCount(inputVal)}> Set value </button> ); } export default CounterApp;
СПОСОБ 2: СОЗДАНИЕ ПРИЛОЖЕНИЯ СЧЕТЧИКА С ИСПОЛЬЗОВАНИЕМ useReducer
ШАГ 1: Создайте функцию-редуктор
export const reducer = (state, action) => { switch (action.type) { case "INCREMENT": return state + 1; case "DECREMENT": if (state > 0) { return state - 1; } else { return 0; } case "RESET": return 0; case "SET VALUE": return action.val; default: return state; } };
мы создадим компонент редуктора, в котором будет написана наша логика, чтобы сделать приложение функциональным. Здесь записывается логика увеличения, уменьшения, сброса и установки значения.
ШАГ 2: импортировать функцию редуктора и объявить состояние
import React, { useReducer, useState, useEffect } from "react"; import { reducer } from "./reducer"; function CounterApp(){ const initialValue = 0; const [value, dispatch] = useReducer(reducer, initialValue); return( <div> counnterApp</div> )
мы импортируем компонент редуктора в counterApp, чтобы передать функциональность приложению.
мы импортируем useReducer для возврата массива, содержащего текущее значение состояния, и функцию отправки, которой мы можем передать действие, а затем вызвать его.
мы будем импортировать useState для хранения переменных, которые являются частью состояния приложения и будут меняться по мере того, как пользователь взаимодействует с вашим сайтом. useEffect позволяет компонентам реагировать на события жизненного цикла, такие как монтирование в DOM, повторный рендеринг и размонтирование.
ШАГ 3: Добавьте кнопки
return ( <div> <button onClick={() => dispatch({ type: "INCREMENT" })}> + </button> <button onClick={() => dispatch({ type: "DECREMENT" }> - </button> <button onClick={() => dispatch({ type: "RESET" })}> RESET </button> <input id="value" type="number" aria-label="value" value={newValue} onChange={(e) => { if (!isNaN(Number(e.target.value))) { setNewValue(Number(e.target.value)); } else { setNewValue(e.target.value); } }} /> <button onClick={() => { dispatch({ type: "SET VALUE", val: newValue, }); setNewValue(""); }} > SET VALUE </button> </div> ); }; export default CounterApp;
Следующим шагом будет добавление кнопок и поля ввода. Свойство события onClick добавляет прослушиватель событий щелчка и делает кнопки функциональными.
Функция диспетчеризации позволяет обновить состояние до другого значения и запустить повторный рендеринг.
Шаг 4: Окончательный код
import React, { useReducer, useState, useEffect } from "react"; import { reducer } from "./reducer"; function CounterApp (){ const initialValue = 0; const [value, dispatch] = useReducer(reducer, initialValue); const [newValue, setNewValue] = useState(""); return ( <div className="counter"> <button onClick={() => dispatch({ type: "INCREMENT" })} > + </button> <button onClick={() => dispatch({ type: "DECREMENT" })} > - </button> <button onClick={() => dispatch({ type: "RESET" })} > RESET </button> <input id="value" type="number" aria-label="value" value={newValue} onChange={(e) => { if (!isNaN(Number(e.target.value))) { setNewValue(Number(e.target.value)); } else { setNewValue(e.target.value); } }} /> <button onClick={() => { dispatch({ type: "SET VALUE", val: newValue, }); setNewValue(""); }} > SET VALUE </button> </div> ); }; export default CounterApp;
Я надеюсь, что вы нашли эту статью полезной, и это почти все, что вам нужно знать для создания простого счетчика в React JS.