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”