• Сколько раз вызывается connetc()?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    В обоих случаях. В начале, так как компонент наверняка где-то подключается, а раз он подключается (например через import MyComp), то весь код выполнится. Так же в случае изменения "примапленных" данных.

    Самый простой способ проверить это - добавить console.log и посмотреть.

    connect( (state)=> {
        console.log('вызван connect')
        return state.arrayValues.filter(val => val.includes(a));//массив со строками
      },
      (dipatch)=>({})
    );
    Ответ написан
    5 комментариев
  • Почитал про ReactTransitionGroup в чем преимущество перед обычной css анимацией?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Из докуменации:
    is an easy way to perform CSS transitions and animations when a React component enters or leaves the DOM

    То есть, это не замена обычной css анимации, а как пишут авторы: легкий путь, чтобы писать css анимацию для реакт компонентов, которые появляются или удаляются из DOM

    через свой набор классов.

    Через ваш набор классов. С помощью transition group вы как раз указываете, какие классы будут использованы.
    Ответ написан
    Комментировать
  • Вызов функции метода вне класса (React js)?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Всегда есть возможность вызывать static методы вне класса. (немного по вашему вопроса на SO)

    class GroupPage extends Component {
        static deleteItem(item){
            console.log('item',item)
        }
    }
    ...
    const SortableItem = SortableElement(({value}) =>
        <li className="listStyle">
            {value.video.time !== 0 ?
             <Button bsStyle="primary" onClick={()=> GroupPage.deleteItem()}>-</Button> : null}  
        </li>);
    Ответ написан
    Комментировать
  • Как дебажить webpack loaders?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Можно написать console.log(pack) внутри файла с кодом лоадера (node_modules/postcss-loader/index.js)
    Вывод console.log'a будет в терминале, где запущен webpack
    Ответ написан
  • Совокупность каких фреймворков backend + frontend является самым быстрым в контексте получения данных клиентом?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Предполагаю, что стоит не четкая задача + прокрастинация (в смысле: выбирать на чем делать, приятнее/труднее/совесть_меньше_пристает/и тд чем делать. Так как делать - это головняк, трудности (реальные) и все такое).

    По поводу задачи:
    = На backend работа с базой данных (CRUD) [окей, ±тянет на задачу]
    = На фронтенде node.js с Angular 2 Universal. [а это уже выбор конкретных технологий, задача то какая? Задача скорее всего, выглядит как: сделать SPA (одностраничное приложение)]

    Далее вы хорошо расписываете пункты. Поэтому частично прокомментирую:
    Работать с базой данных (CRUD) через REST запросы, при этом добавление/удаление/изменение данных доступно только залогиненному через ГУГЛ, ВК или Твиттер пользователю в роли администратора — не ясно

    Все очень просто, например, используете токен. Не лучший (зато простой), но все же пример с которого можно начать.

    Придется ли использовать в таком случае backend на каком-нибудь php фреймворке типа Laravel или yii2?

    Для "изоморфного" вам нужно научиться отдавать контент страницы в html. На чем делать - не важно.

    Можно ли обойтись только фреймворками для node.js для таких вещей как CRUD + кэширование REST ответов от БД + кэширование изображений + сжатие страниц по типу gzip?

    Не специалист, но думаю почти на все пункты "да".

    Являются ли фреймворки на node.js более медленными по сравнению с php фреймворком на nginx в контексте запросов к бд и обработки данных?

    Скорее да, но это какие-то узкие места, которые вряд ли сразу у вас всплывут. Опять же, тут не спец.

    Резюмирую: вам нужно начать делать. Берете инструменты для backend и пишите API, потом берете "что-угодно" на frontend для взаимодействия с этим API.

    p.s. Если задача запустить какую-то идею - вообще не переживайте за технологический стэк, просто берите и делайте хоть на том же sails, вообще не факт, что вам нужен изоморфный одностраничник...

    p.p.s. Совокупность каких фреймворков backend + frontend является самым быстрым в контексте получения данных клиентом? - однозначного ответа нет, и вряд ли будет. Даже если придут люди с картинками, на которых нарисованы циферки тестов.
    Ответ написан
  • Django и React.js как соединить?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Вам больше не нужно использовать django, чтобы рендерить html-ки. Этим будет заниматься react. Вам нужен API сервер, и я так понимаю, подойдет что-нибудь такое (ну или гугл).

    Если можете написать API, то значит нет смысла искать видео-уроки/просто уроки по комбинации Ddjango + React, и вам нужно лишь подтянуть знания по react/redux/react-router или подобной связке.

    Если даже в теории ваша задача не разбивается на 2 части (написание API и написание одностраничного приложения), значит django и react.js в данный момент вам никак не соединить.

    p.s. если есть уже существующий сайт, где используется шаблонизатор от django и рендерятся страницы, то можно взять любую из них, где много динамики (например, удаление и добавление строк в таблице, какие-то xhr запросы и т.д.) и переписать для начала только ее на react.
    Ответ написан
    Комментировать
  • Почему компонент не слушает хранилище?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Предположу 2 ситуации:
    1) Как вам уже сказали в комментариях, скорее всего вы "мутируете" массив, а не возвращаете новый. Например, вам не подходит, метод push, чтобы добавить элемент и вернуть новый массив, используйте concat.

    2) Если вы подключили компонент (с помощью connect), и не прокидываете props вниз потомку, который в свою очередь не прокидывает эти пропс вашему компоненту, который не работает и находится на 3м уровне, не имея прямой связи... то и работать не должно. Чтобы "не прокидывать", можно использовать context, но вряд ли вам это сейчас нужно. Мне, пока что, context использовать напрямую не приходилось.
    Ответ написан
    1 комментарий
  • Как правильно устроить задержку выполнения функций?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Скорее всего, где-то в коде проблема...
    Но если читать ваш вопрос буквально, то кроме как setTimeout есть еще setInterval и requestAnimationFrame (все трое вам не подходят).

    Обычно же, если хочется, чтобы функция выполнилась после получения какого-то результата, используют "коллбэки".
    Ответ написан
  • При сборке Webpack выдает непонятную ошибку?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Проверьте версию webpack'a, у Кантора был скринкаст для ветки 1.x.x, а у вас по умолчанию, скорее всего поставился webpack 2.x.x
    Ответ написан
  • Как включить в сборку сторонние библиотеки?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Если эти шрифты и картинки не должны участвовать в сборке (а они скорее всего не должны), то просто кладите их в "public директорию".

    ...
    // для продакшен конфига
    output: {
        path: path.join(__dirname, 'production/public/'),
        filename: 'bundle.js',
        publicPath: '/',
      },
    ...
    // для dev конфига
    output: {
        path: path.join(__dirname, 'dist'),
        filename: 'bundle.js',
        publicPath: '/static/'
      },
    ...


    Затем где-то в коде...
    ...
    .mac-bg {
      background: url(/static/i/service/mac-bg.jpg) no-repeat;
      background-size: cover;
    }
    ...


    И директория билда:
    3003f3c887984d67b8943a2c7b352e3b.jpg
    Ответ написан
    5 комментариев
  • React + Redux. Какую библиотеку или компонент выбрать для локализации?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Частично ваши запросы может удовлетворить react-intl
    Статья от нашего коллеги (на англ) - там стоит поизучать комментарии. А вот и сам автор на хабре.

    В данный момент тоже пользуюсь react-intl для перевода, но из функционала использую только перевод констант.
    Ответ написан
    Комментировать
  • В чем отличие (преимущество) material-ui и materializecss при использовании с React?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Отличие в командах разработчиков (сарказм, где-то и в коде они, наверняка, отличаются).
    Преимущества: не нужно писать css код для реализации дизайна в стиле material
    Ответ написан
    Комментировать
  • Как избавиться от .less при билде?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Использовать ExtractTextPlugin (гугл, офф.дока для 1й версии вебпака)
    Ответ написан
  • Ваши плагины и пакеты на sublime text для javascript, react, jsx разработки?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Ответ написан
    Комментировать
  • Как вывести контекст нажатого компонента React?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Codepen

    Для изменяемых данных в зеленом блоке, можно использовать state компонента. Устанавливаете state через функцию, которую передаете в props ( везде называется handleClick, но для удобства можете переименовать). Чтобы передать 'city' можно придумать разные варианты, например, с помощью data-*атрибута у элемента, который будет доступен внутри e.target.dataset.*

    Зачем в constructor'e - this.XXX = this.XXX.bind(this) - жду ответ от вас )
    Ответ написан
    5 комментариев
  • Можно ли использовать Webpack для верстки?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Нет необходимости. Gulp справляется с вашими задачами не хуже (а может и лучше).
    Ответ написан
    2 комментария
  • Как настроить динамический роутинг дочерних компонентов в react-router?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Не вижу проблемы..
    <Route path={"/rooms/:chatroomId"} component={ChatBox} />

    В коде Rooms - стандартно - this.props.children, так как ChatBox является потомком...

    p.s. или вы что-то иное хотели спросить?
    Ответ написан
    3 комментария
  • Очистить input React/Redux?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Используете ли вы с redux методы жизненного цикла (componentWillReceiveProps и тд..)

    Конечно, используем.

    У вас "инпут" не очищается, так как нет никакого кода за это отвечающего. Можете использовать например onBlur событие...

    p.s. в целом код выглядит странно немного, может намудрили. Может сделать input неконтролируемым, оставить только "this.props.onChange", а в компонент Input передавать в value - todoName... (не вникал сильно в происходящее)
    p.p.s. про контролируемые и не контролируемые компоненты на русском: раз (мини книжка по реакту, версия старая, но актуально в целом), два (переводы офф.документации)
    Ответ написан
    Комментировать
  • Как правильно добавить класс к компоненту страницы?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Не могу сказать "хорошо/плохо/как лучше", так как всего примера не вижу, но если хотим сделать "как-то еще", то
    можно использовать объект location

    Например:
    generateClassNames() {
        if (location.href.indexOf('list') {
            return '.wrapper--list'
        }
        ...
    }
    ...
    render()
    ....
    let myClass = this.generateClassNames()
    ...
    <div classNames={myClass}>
    ...


    Так же, для работы с классами, удобно использовать пакет classnames
    Ответ написан
  • Может ли redux искать и возвращать обьект из стейта?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    У вас немного размытый вопрос (не совсем понятно "отфильтровать стейт.."), но если я вас правильно понял, в вашем редьюсере вы можете приготовить все данные, чтобы в компоненте их только отображать. Редьюсер для этого и существует.

    Например, есть некий бэкэнд, который возвращает вам ответ. Вам в компоненте из этого ответа нужна всего пара полей. Следовательно, стоит из редьюсера сразу возвращать только необходимые данные.
    Ответ написан