• Как webpack делает bundle из библиотек в node_modules?

    Xuxicheta
    @Xuxicheta
    инженер
    - Нужно ли бандлить библиотеки из node_modules?

    обычно их все в vendor.js помещают. Нужно это или нет, решаете сами.

    - Как использовать dist библиотек из node_modules?

    В мануалах к библиотекам должно быть написано. Обычно просто делается import пакета. А там уж как разработчик библиотеки повелел.

    - Зачем dist в библиотеках, если вдруг это не используется при бандле webpack?

    А если пользователь библиотеки не использует webpack?

    Плюс часто делают amd, esm варианты. Для разных схем импорта.
    Ответ написан
    3 комментария
  • Что из себя представляет Next.js?

    sinneren
    @sinneren
    Объясняю популярно, эта штука делает серверный рендеринг SSR. То есть позволяет вам работать с поисковыми роботами, например (SEO). В частности, имеет свой роутер, может генерировать статичные страницы, может интегрироваться с Express.js или другим сервером на ноде.
    Именно бекендом для реакта может быть едва ли не что угодно, но бекенд не даст вам просто так серверный рендеринг.
    Ответ написан
    Комментировать
  • React + Redux, как записать в состояние после того как придут данные?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    static getDerivedStateFromProps(props, state) {
      if (props.visas[0] !== state.visa) {
        return {
          visa: props.visas[0],
        };
      }
    
      return null;
    }

    Массив this.props.visa должен существовать всегда.
    Ответ написан
    Комментировать
  • Почему не работает ref?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Вы неправильно указываете. Если вы заранее определили ref через createRef, то вам не нужно писать стрелочную функцию в атрибуте ref, достаточно просто указать свойство
    ref={ this.input }
    UPD: а, у вас не в этом проблема. На момент выполнения console.log в handleShowForm, ref еще не создался, т.к. форма не нарисовалась. this.setState асинхронная функция, она не сразу вызывает render функцию, чтобы показать ваше поле. У setState есть callback, который выполняется после изменения состояния. Напишите так
    this.setState({
          showForm: true
        }, () => {
        console.log(this.input);
        });
    Ответ написан
    2 комментария
  • Context API можно использовать вместе Redux?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Context API можно использовать вместе Redux?

    Можно и нужно.

    И по нажатию на одну из этих кнопок, у меня должна выскакивать модалка с формой.

    Глобальные модалки лучше через Redux.

    Если данный кейс не корректен, то можете привести примеры когда целесообразнее использовать Context API, чем пихать инфу в Redux?

    Темы, локали, UA все это удобней использовать с Context API
    Ответ написан
    2 комментария
  • Какая релевантная модель для SPA приложения?

    vicodin
    @vicodin
    Имею некоторый опыт
    умных слов понаписали в вопросе, а сам вопрос простой) если хотите оптимальный по современным меркам вариант - используйте graphQL, если сложно или нет желания, старый добрый rest api.
    А статьи на русском уважающий себя разработчик читать не будет, он будет читать источники ;-)
    Ответ написан
    Комментировать
  • React. Полезные библиотеки на подобие Redux?

    serge-nikitin
    @serge-nikitin
    -
    Ответ написан
    Комментировать
  • React. Полезные библиотеки на подобие Redux?

    devellopah
    @devellopah
    на самом деле, таких библиотек пишется очень много. Поэтому лучше подпишись на рассылки по реакту, пусть новинки приходят на почту
    Ответ написан
    Комментировать
  • React. Полезные библиотеки на подобие Redux?

    @frozen_coder
    Java-developer
    Комментировать
  • React. Полезные библиотеки на подобие Redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Для работы с датами: moment
    Для роутинга: react-router
    Для крутых таблиц, а так же представления большого количества данных: react-virtualized
    Для работы с material ui: material-ui
    Модалные окна: react-modal
    Удобный дейтпикер: react-bootstrap-datarangepicker
    Для google analytics: react-ga
    ---
    Для разработки:
    pre-commit - запускать проверки перед коммитом,
    eslint - поддерживать единый стиль кода на проекте,
    webpack + babel (само собой),
    cross-env - забыть про проблемы NODE_PATH под разные операционки,
    Ответ написан
    7 комментариев
  • Пример использования структурных шаблонов в React.js?

    miraage
    @miraage
    Старый прогер
    Декоратор. Многие HOC являются декораторами/прокси.

    Фасад. В мире React фасадами я бы назвал селекторы. Мы прячем комплексную структуру стора (причем, неважно, что используется - flux, redux, context, whatever) за простыми функциями-геттерами. Это могут быть как обычные геттеры, так и вычисляемые значения.

    Медиатор. Допустим, есть форма с двумя полями с датами "начало" и "конец". Первому нельзя ставить значение выше второго, и наоборот, второму нельзя поставить значение ниже первого. Тут и вступает в бой основной компонент формы, который является медиатором, и назначает разное поведение этим компонентам, в зависимости от их значений. Сами они друг про друга не знают.

    Обсервер. Тот же HOC connect из react-redux, по сути, является обсервером. Изменился mapState - ре-рендер компонента.

    Адаптер. Можно поверх сложных UI элементов (range, datepicker, etc..) писать еще свои адаптеры, которые будут иметь определенный программный интерфейс. Это позволит менять сторонние библиотеки (мало ли, автор забросит поддержку), сохранив при этом программный интерфейс внутри приложения.

    В самом React еще другие паттерны. Например, slot pattern, render props.
    Ответ написан
    Комментировать
  • Как правильно работать с props при большой вложенности компонентов?

    gadfi
    @gadfi
    https://gamega.org
    1. Классическая redux архитектура разделение на умные и глупые компоненты, но это не значит что нужно экономить количество функций connect иначе легко появляются компоненты которым нужно передавать 20 пропертей ...
    2. почитайте про context (не нужно использовать context вместо redux! но знать про него полезно)
    Ответ написан
    Комментировать
  • React, redux, middleware какой набор инструментов и библиотек лучше использовать?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    с использованием разных библиотек для ajax запроса и это не считая jqwerry и middleware

    Про jquery, я так понимаю вы имеете ввиду $.ajax ? А вот про middleware... (может быть не до конца понимаете, что это такое?)

    По вопросам:
    1. Производительность
    А как в вашей сборке жмется конечный файл?
    сейчас собрал сборку gulp, browserify, babelify, babel + библиотеки redux и react

    Не увидел здесь uglifyJS или что-нибудь подобное...

    Многие собирают webpack'ом, (для продакшен версии используя флаг -p, который в свою очередь.. бинго! Запускает разные "сжималки" кода. Не буду вас путать, но по-моему там тоже uglifyjs)

    2. Стили
    Стили, это стили. Как вам нравится, так и пишите. Собирайте их хоть gulp'ом, хоть webpack'ом... Разницы нет.

    3. Посоветуйте, пожалуйста, сборку и набор библиотек, под задачи которые мне предстоит решить:
    К сожалению, могу только подсказать проверенную на проекте либу для построения графиков (не очень крутая и разных типов графиков не так много, но неплохо настраивается и можно быстро разобраться)

    сегодня наткнулся на мануал использования webpack и gulp одновременно на одном проекте

    Оправдан. Если вам удобно какие-то таски прогонять через gulp, почему нет? Если сможете все, что делаете gulp'ом сделать на webpacke, то используйте только его.

    P.S. По поводу сборок. Брать чужую сборку обычно вредно (так как взяли, запустили, а коснись чего - неизвестно как это работает). Особенно, если сборка большая. Вот хороший пример большой и сложной "сборки". Чтобы понять как там все работает, потребуется порядком времени. А нужно ли будет вам все то, что автор туда накрутил? Поэтому, в качестве ознакомления, можно и посмотреть.

    P.P.S. Даже минимальная create-react-app сборка имеет немало всего интересного "под капотом". Поэтому, я за то, чтобы к сборке подходили осознанно, и лучше своей - придумать сложно. Опять же, "своя" появляется далеко не сразу, поэтому просто начните делать приложение.
    Ответ написан
    Комментировать
  • Почему webpack добавляет; в json и не может его парсить?

    @Salteos Автор вопроса
    Ошибку нашёл, оказывается webpack-dev-server искал файлы в корне проекта, а они находились в /src, достаточно было указать ему путь в webpack конфиге
    devServer: {
        contentBase: path.join(__dirname, '/src')
      },
    Ответ написан
    Комментировать
  • Как исправить Ошибку при импорте конфига .ovpn?

    Radjah
    @Radjah
    Если я правильно понял, то ты прочитал по диагонали некий мануал из интернета, скопировал пример конфига и без редактирования и вникания в опции пытаешься его запустить, так?

    > route remote_host 255.255.255.255 net_gateway
    Вместо remote_host и net_gateway должны быть конкретные адреса.

    Директива route добавляет маршрут до указанной подсети. Используется обычно при соединении сетей через туннель.
    Ответ написан
    3 комментария
  • Над чем нужно работать, что улучшать?

    mbelskiy
    @mbelskiy
    Software Developer
    Заметил что у вас много функций определяется в методах render. В этом нет необходимости, а скорее нужно избегать - либо выносить на уровень класса, если нужен this, либо выносить за его пределы.
    Еще вы ходите за картинкой и json файлом по ссылке на гитхаб, а можно их подключить через import, они ведь локально доступны для реакт приложения. Если с json еще спорно, то картинку в шапке точно нужно import-ить
    Ответ написан
    1 комментарий
  • Над чем нужно работать, что улучшать?

    HalfBloodPrince
    @HalfBloodPrince
    Front-End Developer
    Это вообще по js коду, чем чисто к реакту.
    switch(curr){
          case "eur":
            newCurrency = {...this.state.currencyData, rub: false, usd: false, eur: true };
            break
          case "usd":
            newCurrency = {...this.state.currencyData, rub: false, usd: true, eur: false };
            break
          default:
            newCurrency = {...this.state.currencyData, rub: true, usd: false, eur: false };
            break
          }


    А если будет еще валюта, будете еще свойства добавлять? Лучше держать свойство currency и от него отталкиваться. Был бы typescript, еще б указали какие строки туда можно куда присваивать. Причем в state currency уже есть, зачем currencyData я не понял.

    Тоже самое со всеми stop свойствами, их много, трудно понять, что к чему. В общем, посмотрите на это в первую очередь.
    Ответ написан
    2 комментария
  • Почему не работают вложенные маршруты внутри дочерних компонентов ( React-router 4, Redux)?

    @Miki8887 Автор вопроса
    Front-end разработчик
    А решение совсем простое...нужно в родительском и дочернем компоненте обернуть connect в withRouter (https://reacttraining.com/react-router/core/guides...
    Как я могла только забыть про это...
    Ответ написан
    3 комментария
  • Почему не работают вложенные маршруты в React приложении?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    У вас роут /settings со свойством exact. Роуты с этим свойством срабатывают только при точном совпадении маршрута. Уберите его и все будет работать.
    Ответ написан
    Комментировать
  • Что такое изоморфное приложение и как его создать?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Почитайте любую тематическую статью на эту тему.
    1. В самом простом случае у вас две точки входа server(с ReactDOMServer.renderToString) и client(c ReactDOM.hydrate).

    2. State можно получать на сервере и передавать на клиент, примерно, так:
    <script>window.__INITIAL_STATE__ = json.stringify(initialState);</ script>

    В configureStore:
    export = function (initialState: {} = {}) {
      if (__CLIENT__) {
        initialState = JSON.parse(JSON.stringify(window.__INITIAL_STATE__));
      }
    
      return createStore(combineReducers({ ...rootReducer }), initialState, enhancer);
    }

    3. Никаких глобальных переменных для состояний изменяющихся от клиента к клиенту(локали, темы и прочее). Node обрабатывает множество запросов одновременно и информация клиентов при передаче конфигураций в глобальные модули или при использовании глобальных состояний может перемешаться.
    4. Получение данных на сервере и клиенте тот еще головняк. Посмотрите как реализована библиотека react-frontload.
    Ответ написан
    Комментировать