• Зачем в React так записывают в state?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Во-первых в setState в корень предыдущее состояние передавать не нужно, так под капотом к нему так и так подмешается предыдущее состояние, в не зависимости от того, что вы туда передадите. Примерно так:
    state = { ...prevState, ...newState };

    Во-вторых не правильно передавать в setState this.state, так как setState выполняется асинхронно и ваше текущее состояние может успеть измениться. Если надо обновить состояние на основе предыдущего, в setState по-хорошему надо передавать функцию, в которую первым аргументом при вызове придет ваше состояние:
    this.setState(prevState => ({
      some_data: {
        ...prevState.some_data,
        ...input,
      },
    });
    Ответ написан
    3 комментария
  • Как оптимизировать приложение на React/redux?

    miraage
    @miraage
    Старый прогер
    Много объектов в DOM дереве - зло. https://bvaughn.github.io/react-virtualized/ в помощь.

    Redux.
    Если есть computed selectors - оберните их в https://github.com/reactjs/reselect/
    Убедитесь, что у Вас правильная "форма" (shape) стора. Продумайте, в каких структурах лучше хранить данные, чтобы их было проще обновлять/получать.

    Если есть узкое место в множестве преобразований данных: задумайтесь о таких мелочах, вроде создания новых функций-коллбэков, на это тоже ресурсы расходуются - возможно надо применить что-нибудь из functional programming (lodash-fp, ramda, most).

    Не переборщите с магией. Старайтесь писать приложение так, чтобы код был максимально близок к текущему стандарту в браузере. Для этого тюнингуем babel-preset-env, с указанием нужных targets.browsers, и смотрим на caniuse/mdn какие фичи из стандартов используете и какие поддерживаются текущими браузерами.

    Не могу найти твит одного из разработчиков React. TL;DR - React не является серебрянной пулей для решения задачи огромной перерисовки.
    Так же, почитайте: https://jakearchibald.com/2017/netflix-and-react/
    Ответ написан
    Комментировать
  • Как развить навык проектирования приложения или как стать Senior?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Писать много кода. Читать книги. Читать чужой(хороший) код.
    Ответ написан
    3 комментария