Как да започнете с Gatsby 2 и Redux

Gatsby 2 и Redux се смесват като бонбони в буркан

Gatsby + Redux е мощна комбинация при създаване на статични уеб приложения с динамични функции. С Gatsby 2 никога не е било по-лесно да ставате и да бягате. Днес ще ви насоча през необходимите стъпки.

Не сте голям почитател на четенето? Преминете веднага към стартера Redux:
https://github.com/caki0915/gatsby-redux-test/
или използвайте Gatsby CLI:

npx gatsby new gatsby-redux-test https://github.com/caki0915/gatsby-redux-test/

Какво е Гетсби?

Гетсби е един от най-популярните генератори на статични сайтове там. Предварително конфигуриран с Webpack, React и GraphQL, той ви дава страхотна преднина при създаването на уеб приложения. Освен това той предлага богата екосистема от приставки, която улеснява свързването с различни източници на данни. Прочетете повече за Гетсби на техния уебсайт.

Какво е Redux?

Redux е контейнер за състояния, често използван заедно с приложения React. Тази статия ще предположи, че вече знаете как работи Redux. Ако сте нов в Redux или се нуждаете от прескачане, ще намерите повече информация на уебсайта им.

Да тръгваме!

Започнете със създаването на нов проект на Гетсби. В терминала изпълнете: (Заменете gatsby-redux-test с име по ваш избор)

npx gatsby new gatsby-redux-test && cd gatsby-redux-test

Следващата стъпка е да инсталирате redux и react-redux пакети от NPM.

npm install - запазване на redux react-redux
Инсталирани са пакети Redux и React-redux

Добре, нека добавим състояние!

Създайте нова папка, наречена състояние вътре във вашата папка src и създайте файл app.js. За целта на този урок ще добавим проста функция, която ви позволява да включвате и изключвате променлива „darkMode“.

Първо, добавете първоначалното състояние:

const началоState = {
  isDarkMode: false,
};

Добавете създателя на действие (за включване и изключване на darkMode):

const TOGGLE_DARKMODE = 'TOGGLE_DARKMODE';
export const toggleDarkMode = isDarkMode => ({
  тип: TOGGLE_DARKMODE, isDarkMode
});

Добавете редуктора:

експортиране по подразбиране (състояние = първоначално състояние, действие) => {
  превключвател (action.type) {
    случай TOGGLE_DARKMODE:
      връщане {... състояние, isDarkMode: action.isDarkMode};
    по подразбиране:
      състояние на връщане;
  }
};
Начално състояние, създател на действие и редуктор

ОК страхотно! Сега, нека добавим коректор-редуктор. Създайте нов файл index.js вътре в папката на състоянието.

import {combReducers} от 'redux';
приложение за импортиране от „./app“;
експортиране по подразбиране combReducers ({app});
Нашият корен редуктор.

Сега ще създадем магазин и доставчик. Създайте нов файл ReduxWrapper.js в папката на състоянието. Този компонент ще обвие нашия корен в Gatsby.

import React от 'реагира';
import {Доставчик} от 'react-redux';
import {createStore as reduxCreateStore} от 'redux';
импортиране на rootReducer от '.';
const createStore = () => reduxCreateStore (rootReducer);
експортиране по подразбиране ({елемент}) => (
   {елемент} 
);
Създайте магазин и доставчик

Gatsby ще рендира нашето приложение както на сървъра, така и в браузъра, а за късмет за нас Gatsby има много гъвкав API, който ни позволява да се закачим в рендеринга. Можем да реализираме куките от два файла: gatsby-browser.js и gatsby-ssr.js.

Куката, от която се интересуваме, се нарича wrapRootElement и ви позволява да увиете приложението си с персонализиран елемент. Точно това, от което се нуждаем за нашия Redux доставчик. Можете да прочетете повече за wrapRootElement в документацията.

Тъй като искаме да експортираме нашия ReduxWrapper като wrapRootElement от gatsby-browser.js и gatsby-ssr.js, добавете този ред и към двата файла:

експортиране {по подразбиране като wrapRootElement} от './src/state/ReduxWrapper';
Експортирайте нашия ReduxWrapper от gatsby-ssr.js и gatsby-browser.js

ОК, готово. Гетсби и Редукс вече работят заедно! Сега ни трябва само начин да го тестваме.

Нека да преминем по най-лесния възможен начин, за който се сещам: Бутон в началната страница, където човек може да включва и изключва darkMode. Когато е включен darkMode, бутонът ще бъде тъмен с бял текст.

Прост тест, за да видите, че Redux всъщност работи.

В терминалния цикъл:

npm run се развива

И ... вижте тъмната тема в действие!

Минимален пример Redux

Ок, може би това не беше толкова впечатляващо, но примерът върши своята работа и съм сигурен, че ще намерите много по-добро приложение за Redux във вашето Gatsby-приложение.

резюме

Gatsby + Redux е мощна комбинация, ако искате да създадете статични уеб приложения с динамични функции. Използвам го и за моите проекти. Ако смятате тази статия за полезна, моля, добавете коментар и линк към страхотното си приложение Gatsby / Redux.

https://carljohan.me - Чекмедже е подходящ случай за използване на Redux