Рубрики
Без рубрики

Ударяет, котельная

img Jase Ess Здравствуйте, Dev.to, IAM работает на мгновенные данные. Небольшой комп … помеченный с помощью Tymdercript, JavaScript, React, retucks.

img Jase Ess

IAM работает на Мгновенные данные Отказ Небольшая компания, которая предоставляет решения в среде более крупного рекламного агентства. в основном внутренние инструменты.

После небольшого воспроизведения с приложением Create-React-App, я хотел поделиться своей последней бойцевой панелью с вами и просить о своем мнениях или улучшении. Вы можете посетить меня здесь на github. В этом я следую за уклоном, В котором вы пытаетесь сохранить все ваши материалы редуктора Redux и Store в одном файле , но для сухого, я представлю вам readme.md. Я ценю любую отзыв 😉

Это создано через CLI-Tool Create-raction-app <ваше-appname> -scripts-ts и индивидуальные для моих потребностей, бегая NPM извлечь

Предварительные условия

Установленный узел и NPM версии 8 или выше.

Доступные сценарии

В каталоге проекта вы можете запустить:

NPM Start.

Открыть http://localhost: 3000 Чтобы просмотреть его в браузере.

NPM запустить сборку

Создает приложение для производства к построить папка.

NPM запустить семену семя

Чтобы сделать ботинку работать с нуля, и смоделировать поток Auth, мы поставьте JSON-сервер. Вы должны удалить полную папку семян или лучше добавить его в свой .gitignore. , когда вы реализуете свой собственный рабочий процесс. Использовать его просто NPM пробежать семена Отказ Вы будете подавать в JSON-Server --port 4000 --watch - Seeds/db.json Отказ

Структура папок

После создания ваш проект должен выглядеть так:

my-app/
  README.md
  node_modules/
  package.json
  public/
    index.html
    favicon.ico
  seed/
    /* a helper fake backend for firsttimers */  
  src/
    index.tsx
    components/
      App.tsx
    containers/
      /* your connected containers here */
    ducks/
      /* your ducks here */
    services/
      /* put all your global helpers inside here */
    store/
      history.ts
      index.ts
      localStorage.ts
  types/
    /*your types go here */  

Отладка и devtools.

Я настоятельно рекомендую вам установить и использовать тезисы BaseRextensions.

Материал-интерфейс и декораторы

Экспериментальная функция для декораторов активируется в tsconfig.json Отказ Благодаря этому можно использовать в сочетании с составить из Пересматривать пакет . Пример использования:

import { compose } from 'recompose';
import { withStyles } from '@material-ui/core/styles';

@(compose(withStyles(styles)) as any)
class Example extends React.Component {...}

Использовать темы в материале пользователь нам нужно обернуть содержимое приложения внутри


  //any content here

Узнайте больше о материалах Темы пользовательских интерфейсов

Окружающая обстановка

Существует возможность обеспечить переменные ENV. Используйте .env Файл для этого. Обратите внимание, что им нужно следовать соглашению о именах Rage_app_ Пример = Foobar Отказ Внутри проекта можно потреблять их по Process.env. Rage_app_example Отказ На новом запуске его установлен на траектории осей, поэтому можно захотеть изменить его там.

HTTP-запросы

Пожалуйста, используйте Axios для ваших запросов. Он поддерживает обещания, а также Async/ждут. https://github.com/axios/axios Также убедитесь, что позвольте доступе к кроссоригину на вашем сервере.

Утки

Мы следуем за «уклон», чтобы структурировать наше приложение. Получить идеи на этот спешек здесь https://github.com/erikras/ducks-modular-rexux Узор состоит в том, чтобы все эти были внутри одной утки:

  • Действие Enum.
  • Типы действий
  • Действия Создатели
  • Функции редуктора
  • главный
  • тщательный
  • инициал

Сообщение компонент

Существует rudimental пример, подготовленный в этой котельной, который показывает использование и потребление сообщений высокого уровня или компонента уведомлений. Импортируйте nofictationduck внутри уток, которые вы хотите, чтобы уведомление было уловить.

import NotificationDuck from '~/src/ducks/notification';

your.action()
  .then(() => /* success */)
  .catch((err) => {
      dispatch(NotificationDuck.throwNotificationWithError({text: 'your text', title: 'your title'}))
  })

Но вы также можете подключить их непосредственно к компонентам. Пожалуйста, имейте в виду, чтобы сбросить NotificationStore, с помощью Reset_notification_Store действие!

Магазин

Используйте папку SRC/Store Чтобы настроить магазин Redux в соответствии с вашими потребностями. Существует также возможность подписаться на части магазина в местное хранилище. Чтобы сделать это, проверьте index.ts И иметь краткий посмотрите на хранилище подписания.

store.subscribe(throttle(() => {
  const storage = store.getState() as RootState;
  const AuthStore = storage.AuthStore;

  saveState({
    AuthStore
  } as RootState);
}, 300));

Пожалуйста, используйте дроссель Лодш-помощник. Json.parse ()/json.stringify дорогие в JavaScript.

Услуги

Все, что вы хотите потреблять повторяющиеся, относится к услугам. Другое слово может быть глобальным ходом.

  • APICONTROLLER -> Экземпляр Axois The Cross можно настроить. Импортируйте его в свои утки, чтобы сделать http . -верки.
  • Authenticationservice -> можно использовать в сочетании с Apicontroller внутри уток для проверки состояния аутентификации

Внутри вашей утки – пример использования в Thunk

import axios from '../../services/apicontroller';

public static getAuth() {
    return function (dispatch: any, getState:() => RootState): Promise {
      dispatch(AuthDuck.getAuthAction());

      //return the axois object with header, pass the state by `getState()` to auth and GET the route with `get('/yourRoute')`

      return axios(getState()).get('/Authentication')
        .then((res) => {
          dispatch(AuthDuck.getAuthSuccessAction(res.data));
         })
        .catch((err: Error) => {
          /**
        });
    };
  }

Есть также целое Реагистрационный маршрутизатор V4 Часть, я объясню в 50: сердце:-)

Оригинал: “https://dev.to/janpauldahlke/rate-my-boilerplate-j8c”