Ответы пользователя по тегу React
  • Django и React Hot Module Reload?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Может быть ваш файл index.tsx не лежит внутри
    path.join(__dirname, 'client')
    ?
    В противном случае, попробуйте создать что-нибудь на одном уровне с app.tsx, подключить это внутри app и поизменять. В целом, судя по вашему конфигу, я проблем не вижу.
    Ответ написан
  • Какой выбртаь фреймфорк для real-time карт (postgresql)?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Кнокаут вряд ли, ибо старый уже (хотя вижу, что релиз вышел 17 ноября 2015...)
    NodeJS - это бэкэнд вообще.

    Далее, идете в гугл, пишите "{фреймворк} leaflet" и смотрите сколько есть материала, какой из них более подробный и вам больше нравится. Какие уже есть готовые решения и так далее. Например, react leaflet
    Ответ написан
    Комментировать
  • Как реализовать редактирование данных?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Добрый день.

    но у меня нет самого объекта, к которому привязано это свойство.

    А откуда у вас тогда this.props.title, например?

    После редактирования поля (полей) вы отправляете запрос на сервер с данными из формы (по нажатию на кнопку в родительском компоненте, или как?). Используйте id, которое вам изначально приходит (судя по формату данных в вашем вопросе) и находится, вероятно, в this.props.id
    Ответ написан
  • Есть ли хороший React компонент для визуального редактора текста?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Я посмотрел, внутри draft.js есть возможность повозиться с image. Возможно, вам поможет.
    Ответ написан
    Комментировать
  • React.js + WebApi.NET. Подскажи как сделать авторизацию?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Что делает WebApi .NET ? Как оно будет авторизовывать?

    В общих словах:
    Если по токену - то проблем нет. Делаете форму, отправляете данные - получаете в ответе токен. Токен храните как-нибудь, например в localStorage. На логаут токен очищаете. На "expired" - либо просто просите снова залогиниться, либо используете refresh-токены (сам с рефрешем не заморачивался).

    Если не по токену, то почему и зачем?
    Ответ написан
    3 комментария
  • AMD или CommonJS?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    а если вы будете использовать require.ensure (из мира webpack) - это не решит вашу проблему? подробнее здесь - https://www.youtube.com/watch?v=Om6yGdU_YlQ
    Ответ написан
    Комментировать
  • В каком виде лучше хранить данные в store?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Добрый день! Ваш вопрос очень хорошо разбирается во втором курсе на egghead от создателя Redux. Конкретно, один из самых близких к вашему вопросу ответ - https://egghead.io/lessons/javascript-redux-normal... (используется normalizr).

    Но мой ответ, к вам не сколько в видео про "нормалайзер", а про то, что посмотрите весь курс и вы познакомитесь с такой темой, как селекторы. То есть, будете вытаскивать в компонентах только нужные данные с помощью определенных функций селекторов, которые опишете в ваших редьюсерах. У вас получится как минимум на 1 уровень глубже использовать combineReducers для того, чтобы держать:
    а) массив id-шек
    б) объект с ключами, в виде id ваших записей (объект объектов, так сказать)

    Говорю это опираясь на свой опыт. После перехода на "массив с id" + "объект объектов" + селекторы => проблема указанная в вопросе исчезает!

    Привожу скриншот из проекта, над которым сейчас работаю: (на странице рендерится список поставщиков)
    bf23114aea41409386f2d583a8d78567.png

    P.S. этот вопрос будет подробно разобран в новом туториале, но боюсь он выйдет не раньше конца лета.
    Ответ написан
  • Как очистить форму после выполнения?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Для генерации id использую библиотечку node-uuid
    Например:
    import { v4 } from 'node-uuid'
    ...
    const myId = v4()
    ...
    Ответ написан
    Комментировать
  • Как использовать Redux в Meteorjs, если там много коллекций?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Я так понимаю, нужно коллекцию подписывать на изменение в store. Дробить store на кусочки (кусочек для каждой коллекции) + использовать combineReducers. Бегло посмотрел вот этот материал (на англ.)
    Ответ написан
    Комментировать
  • Как организовать React шаблоны в отдельных файлах?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    И вообще нормальна ли такая практика относительно react-а?

    Нигде в популярных (и не очень) репозиториях я такого не встречал. А главное, как указал fetis26 - пользы от такого разделения никакого нет. Если найдете (пользу) или какой-то репозиторий, где так сделано - добавьте, хотя бы попробуем понять автора.

    Другое дело, что иногда в render функции компонента, удобно определить какой-то кусочек JSX в переменную. Например:

    let articlesHeaders
    if (this.props.articles.length > 0) {
      articlesHeaders = this.props.articles.map(item => <h4 key={item.id}>item.title</h4>
    } else {
      articlesHeaders = <button onClick={this.onTryAgainClick}> Try Again </button>
    ...
    return (
      <div> bla bla .... </div>
      {articlesHeaders}
      <div> bla bla ... </div>
    )

    Обычно используется, когда есть какое то условие в if / else, где относительно нашего примера в articlesHeaders могла бы быть разная разметка (шаблон).
    Ответ написан
    Комментировать
  • Что делает этот React.js код?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Как ответил copal , вам, действительно, нужно закрыть пробелы в знаниях самого js. А потом уже читать туториал по реакту.
    Попробуйте в render компонента, сделать console.log(this.props) -> будет объект, с ключом data. Поэтому мы и пишем this.props.data.

    По поводу map. (как там написано - Функция, создающая элемент в новом массиве, принимает три аргумента, вот как раз первые два и есть "текущий элемент" и "индекс"

    p.s. учебник выбрали годный :) , но требуется повысить уровень основ JS, так будет лучше для обучения.
    Ответ написан
    3 комментария
  • Как оптимизировать mapDispatchToProps?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Есть хороший вариант: подключить actions через *

    import * as UserActions from '../actions/UserActions'
    ...
    const mapDispatchToProps = (dispatch) => {
      return {
        userActions: bindActionCreators(UserActions, dispatch)
      }
    }


    В таком случае, все действия юзера (а именно, все экспортируемые функции из файла UserActions) будут доступны из this.props.userActions (например, this.props.userActions.saveUser)

    Так же, можно не писать return, если вы возвращаете объект (как раз наш случай)
    const mapDispatchToProps = (dispatch) => ({
      userActions: bindActionCreators(UserActions, dispatch)
    })


    Обратите внимание на круглые скобки.
    Ответ написан
  • Как передать и обновлять значение параметра в react?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    "Нужно больше кода".

    Тем не менее, предположу:
    а) при изменении topbarVisible "где-то там" - значение не изменяется (передается undefined/другое свойство, и topbarVisible остается не тронутым)
    б) параметр изменяется, но в цепочке родителей-потомков есть shouldComponentUpdate, который блокирует изменение.

    Нужно проверить всю цепочку. Где изменяется topbarVisible? В этом компоненте с помощью console.log / debugger посмотреть изменяется ли. Если все ок - идти дальше по цепочке, и смотреть в какой из компонентов новое значение props не пришло (либо console.log в componentWIllReceiveProps, либо debugger по шагам (кнопочка play), либо просто react панель-разработчика в консоли).

    update: поздно заметил, почему у вас this.topbarVisible? Это разве не свойство, которое пришло в props? Если вы используете state, все равно не ясно зачем свойство подключать через this.
    Ответ написан
  • Какой фреймфорк для Node.js(плюс React.js на клиенте) выбрать?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Подскажите, какой фреймворк выбрать для node.js, при условии, что на фронтенде будет React.js ?

    Не вижу связи.

    А по фреймворкам для сервера на node, я не слышал ничего популярнее express / koa.

    Возможно, вам вовсе не нужен фреймворк для реализации чата.
    Ответ написан
    3 комментария
  • Какие основные понятия в архитектурах Flux, Reflux, Redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    в redux у вас есть:
    store - состояние всего приложения в одном(!) объекте. Для удобства, вы конечно бьете "store" на кусочки и изменяете/обновляете его не целиком, но в конечном счете объект store все равно один.
    actions - действия. Все изменения в redux приложении делаются действиями. Например: Действие(тип: ДОБАВИТЬ_ОДИН)
    actions creators* - создатели действий. Функции, которые вы можете вызывать, вместо того, чтобы вызвать действие, напрямую. Например:
    function add() {
      return { тип: ДОБАВИТЬ_ОДИН }
    }

    reducer - редьюсер. Функция которая принимает текущий объект store, и возвращает новый (с новыми данными).

    Итого: в redux фундаментальных понятий всего три: действие (action), редьюсер (reducer) и состояние (store)

    В реакте и того меньше: есть одно понятие - компонент. А уж там, если хочется: умный/тупой компонент, stateless компонент и может быть что-то еще.

    p.s. в коде функций присутствует русский язык для наглядности.

    p.p.s. туториалы: react для начинающих, создание приложения с использованием redux
    Ответ написан
    2 комментария
  • Как узнать из какого модуля ошибка?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Как узнать?
    Поиском по проекту "React.findDOMNode", но я подозреваю, что это где-то в самом верхнем компоненте у вас. Либо просто поиском по "findDOMNode", так как где-то может быть подключено так: import React, {findDOMNode} from 'react'

    Как исправить?
    а) npm install react-dom
    б) везде где используете React.findDOMNode заменить на findDOMNode, предварительно в каждом файле проимпортировав: import { findDOMNode } from 'react-dom'

    Суть ошибки в том, что функция findDOMNode переехала в отдельный пакет, а у вас она используется из пакета 'react'.
    Ответ написан
    1 комментарий
  • Простой пример Drag and Drop на ReactJs?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    https://gaearon.github.io/react-dnd/ (от создателя Redux)
    p.s. не знаю "небольшой" ли. Кода на github'e там порядком (но если присмотреться повнимательнее, окажется, что все не так плохо)
    Ответ написан
    Комментировать
  • Возможно ли создать полноценное SPA приложение на React.js?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Конечно можно. React + Redux и дело в шляпе.
    Для роутинга - react-router.
    Для сборки/минификации/использования es6 и т.д. - webpack+babel
    Для тестов - ммм, пожалуй, "мир реакта" просто сказка в вопросах тестирования. Есть много отличных инструментов.

    ---
    В дополнение к предыдущему ответу: выбирать новую технологию для проекта стоит, только если сроки позволяют ( о чем там в принципе и написано). Использовать react для какой-то отдельной страницы/части можно.

    Как сказал, Dan, создатель Redux (примерно, по памяти):
    "Если у вас нет времени изучать А, то А не требуется на этом проекте"
    Ответ написан
    1 комментарий
  • Как открывать заново текущий rout React.js, после перезагрузки страницы?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Я правильно понимаю, что у вас есть проект, на котором реакт рендерит лишь некоторые вьюхи? (то есть, только некоторые страницы?)
    В таком случае, вы можете сделать отдельные сборки для каждой страницы без использования роутинга вообще. Или, зачем он вам в таком случае?

    То есть: есть страница about на реакте, сделайте для нее bundle-about.js, для contacts на реакте - bundle-contacts.js и так далее.
    Ответ написан
    2 комментария
  • В каждом файле по умолчанию подключены несколько node modules?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Про директории не в курсе, а в файлах можно не импортировать, для этого нужно использовать webpack-provide-plugin

    ...
      plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new webpack.ProvidePlugin({
          'React':     'react'
        })
      ],
    ...


    Здесь немного подробнее ( переведу последний пример - как импортировать сразу несколько...)

    new webpack.ProvidePlugin({
        '$':          'jquery',
        '_':          'lodash',
        'ReactDOM':   'react-dom',
        'cssModule':  'react-css-modules',
        'Promise':    'bluebird'
      })


    Позволит вам не писать в файлах:

    import ReactDOM from ‘react-dom’
    import _ from 'lodash'
    import $ from 'jquery'
    import cssModule from 'react-css-modules'
    Ответ написан
    1 комментарий