React+hooks+Redux
  • Вступление
  • REACT HOOKS
    • Введение в хуки
    • Основные хуки
      • Хук состояния (useState)
      • Хук эффекта (useEffect)
      • Хук колбека (useCallback)
      • Хук рефа (useRef)
    • Создание собственных хуков
    • Правила использования хуков
    • Полезная информация
      • Хук мемоизированного значения (useMemo)
      • Как закешировать вычисления?
      • Как получить предыдущие пропсы или состояние?
      • Как осуществлять запросы за данными с помощью хуков?
    • Задание React Hooks
  • REDUX
    • Что такое Redux
    • Основы
      • Действия (Actions)
      • Генераторы действий (Action Creators)
      • Редюсеры (Reducers)
      • Хранилище (Store)
      • Получение доступа к actions и state с помощью функции connect()
      • Подключение Redux
    • Что дальше?
      • Асинхронные действия (Async Actions)
      • Использование Redux с React Router
    • Задание Redux
  • FAQ
    • Заключение
Powered by GitBook
On this page

Was this helpful?

  1. REACT HOOKS

Задание React Hooks

PreviousКак осуществлять запросы за данными с помощью хуков?NextЧто такое Redux

Last updated 5 years ago

Was this helpful?

По находиться проект написанный с помощью классовых компонентов (stateful). Его необходимо переписать на функциональные компоненты с использованием хуков.

Пример:

1. Исходный компонент (stateful component):

import React, { Component } from "react";
import { CommonLinkBtn } from "./CommonLinkBtn";

class Checkout extends Component {
  componentDidMount() {
    this.props.flushCartHandler();
  }
  render() {
    return (
      <div className="page-body">
        <div className="page-element">
          <div className="checkout-page">
            <h2>Successful!</h2>
            <CommonLinkBtn linkTo={"/"} linkName={"Back to shop"} />
          </div>
        </div>
      </div>
    );
  }
}

export default Checkout;

2. Компонент после изменения:

import React, { useEffect } from "react";
import { CommonLinkBtn } from "./CommonLinkBtn";

const Checkout = ({ flushCartHandler }) => {
  useEffect(() => {
    flushCartHandler();
  }, []);

  return (
    <div className="page-body">
      <div className="page-element">
        <div className="checkout-page">
          <h2>Successful!</h2>
          <CommonLinkBtn linkTo={"/"} linkName={"Back to shop"} />
        </div>
      </div>
    </div>
  );
};

export default Checkout;

П.с. проект уже переписан на функциональные компоненты, и если что-то не понятно можно переключиться на ветку react-stateless , посмотреть и протестировать уже готовый пример.

ссылке