Pull to refresh
16K+
17
Andrew Ka@comerc

#кодеротбога

-9
Rating
114
Subscribers
Send message

Очевидно, вы пролистали на мою заметку по диагонали, Apollo упоминается два раза. Но суть уловили верно. Задача развязать клиент и сервер в рамках существующего долгоиграющего проекта (без Apollo). И Redux мне в этом поможет.

Я неточно выразился. Представляю себе Redux, как архитектуру движения данных в приложении. Так лучше?

Например. Сравнивая CRA и CRA-TS, меня смущает, что tsconfig.json и tslint.json торчат наружу. Да, я хотел бы иметь возможность их править при необходимости, но мне нужны "настройки по умолчанию". Это крайне ценное назначение CRA, на мой вкус.

Не понял. У вас же по коду прибавилось функционала (подключение к реакт-роутеру).

Затык случился лишь однажды, когда CRA переехал на Webpack 2 — тынц.

В этом весь цимес, обновление CRA хоть каждый день, без последствий за пару минут! И никакой магии, вставьте console.log(config) в config-overrides.js — конфиг webpack, как на ладони.

Вот и всё, что мне нужно для щастья:


yarn add --dev file:path/to/your/custom/package

Я пришёл к такому разделению редюсеров. Есть общий редюсер app, где свалка глобальных состояний приложения. Для каждой сущности два редюсера: item и list. При этом редюсер для item используется на нескольких страницах (просмотр и редактирование сущности). При этом данные отображаемых сущностей в списке (list) спрятаны в локальных стейтах, а в редюсерах живут флаги и сайд-эффекты. И только данные для item так же живут в редюсере, потому что их нужно отображать в форме и в превью (например). Благодаря redux-act, ни один switch не пострадал.


Чего тут сложного?!
// @flow
import { createAction, createReducer } from 'redux-act'
import api from 'api'

export const REDUCER = 'user'
const NS = `@@${REDUCER}/`

const reset = createAction(`${NS}RESET`)
const set = createAction(`${NS}SET`)

export const readItem = (id: ?number) => (dispatch: Function, getState: Function) => {
  if (id) {
    return api.get(`/api.php/members/${id}`).then(response => 
      dispatch(set(response.data))
    )
  }
  dispatch(reset())
  return Promise.resolve()
}

export const submit = (id: ?number, values: Object) => (dispatch: Function, getState: Function) => {
  if (id) {
    return api.put(`/api.php/members/${id}`, values)
  }
  return api.post(`/api.php/members`, values)
}

const initialState = {}

export default createReducer(
  {
    [reset]: () => ({ ...initialState }),
    [set]: (state, data) => ({ ...state, ...data }),
  },
  initialState,
)

Ну очень привык к yarn upgrade-interactive. Есть ли подобное для npm? Нашёл npm-upgrade — почти, но оно пошаговое.

Интересно, а вместе с Yarn полетит, или npm-only?

А ещё Logux скоро подвезут.

Можно взять FeathersJS и вообще забыть о транспорте между клиентом и сервером.

Знаете, какой рутовый компонент приложения при использовании redux? Provider. Представьте, что в его локальном стейте хранятся все данные. Вот и весь наш redux.

А какие есть проекты для быстрого запуска RESTFul API сервера? Типа как FeathersJS, ну или хотя бы на уровне PHP-CRUD-API

Lerna? Не, не слышал.

Божечки, наконец-то!

Я выбираю Flow, т.к. волен выбирать вкусные babel-плагины.

Я сейчас на PHP (по требованию заказчика) сочиняю API. После 5-ти летней паузы. Вот откуда ноги растут с этими запятыми!

А если прикрутить Prettier, то оно вообще не парит.

Information

Rating
Does not participate
Registered
Activity