Ответы пользователя по тегу React
  • Как в webpack указать пути модулей относительно папки src?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    алиасы фпомасч
    Ответ написан
    Комментировать
  • Как вести документацию для react компонетов?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Документировать надо, в первую очередь, бизнес-логику
    Ответ написан
    Комментировать
  • Есть ли хороший актуальный на 2019 год ресурс по react/redux?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Надо просто понять суть, понять как работают HOCи (компоненты высшего порядка) и проекция props. Если совсем коротко, то ридакс - это единый стор, который не позволяет менять данные напрямую, вместо этого нужно диспатчить экшены, которые пробрасываются в редьюсеры - чистые функции, задача которых на вход получить текущее состояние стора и экшен, произвести изменения, не затрагивая текущее состояние (иммутабельно) и вернуть новое состояние. Редьюсеры вызываются по цепочке, так же по цепочке вызываются и миддлвары, которые позволяют перехватывать экшены и, например, производить асинхронные действия, вроде запросов к API. Ну и напоследок любой компонент может подписаться на изменения в сторе посредством HOC connect из пакета react-redux.

    Если вышеперечисленное понятно, остается только попрактиковаться. Начинать рекомендую с описания стора и редьюсеров с экшенами, и потом просто подёргать диспатчем экшены напрямую, без всякого реакта.

    Ну и для облегчения жизни и увеличения производительности приложения надо еще понять reselect (мемоизированные селекторы) и прям чтобы совсем было весело immutable - иммутабельные структуры данных, которые на любой чих возвращают новую структуру с новой ссылкой, за счет чего любые изменения выявляются через банальное сравнение ссылки.

    reselect и immutable это как специи, позволяют существенно оптимизировать работу приложения, но на первых порах можно жить и без них.

    ЗЫ: Если найдешь меня в скайпе, можешь позадавать вопросы. :)
    Ответ написан
    Комментировать
  • Как правильно вызвать setState из разных методов?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Дело в том, что setState меняет состояние не сразу после вызова (не синхронно), а когда-нибудь, поэтому неизвестно заранее, когда именно state будет реально изменени. Поэтому setState в качестве аргумента может принимать как объект так и функцию (коллбэк). И вот в этот самый коллбэк всегда передается текущее актуальное состояние. Поэтому твой код надо переписать как-то так:

    export default class App extends Component {
      state = {
        items: []
      };
    
      add = (item) => {
        this.setState((state) => ({
            ...state,
            items: [...state.items, item]
        }));
      };
    
      remove = (id) => {
        this.setState((state) => 
          return {
            ...state,
            items: state.filter(item => item.id !== id),
          }
        );
      };
    
      updateItem = (id, item) => {
        item.text = 'blabla';
        this.remove(id);
        this.add(item);
      }
      // Дальше остальные методы, рендер итд...
    }


    Другой вариант - отвязать методы add и remove от this.state, и передавать им state непосредственно. И этот вариант более правильный, т.к. он более явный, кроме того каждый вызов setState потенциально ведет к перерендеру, что нежелательно.

    Поэтому как-то так:

    export default class App extends Component {
      state = {
        items: []
      };
    
      add = (state, item) => ({
        ...state,
        items: [...state.items, item]
      });
    
      remove = (state, id) => ({
        ...state,
        items: state.filter(item => item.id !== id),
      });
    
      updateItem = (id, item) => {
        item.text = 'blabla';
        this.setState(state =>  this.add(this.remove(state, id), item));
      }
      // Дальше остальные методы, рендер итд...
    }
    Ответ написан
    1 комментарий
  • Что нужно иметь и знать в фреймворке React джуну?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Для начала будущему джуну не плохо бы сходить на сайт реакта, и прочитать там большими буквами, что Реакт - ни разу не фреймворк, а очень даже "A JavaScript library for building user interfaces".

    Во вторых будущему джуну надо осознать, что если он так неаккуратен в терминологии, то в разработке ему будет трындец как сложно. Компьютер, в отличии от человека, воспринимает все буквально и делает ровно то, что сказано. И если сказано неточно, то результата не будет.

    В общем будущему джуну нужно прокачивать дисциплину мышления и серьезно поработать над уточнением формулировок. На первые пол-года хватит, а потом пусть будущий джун возвращается с новыми вопросами, скажем что делать дальше.
    Ответ написан
    2 комментария
  • Есть ли хорошие источники для изучения ReactJS?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Всё зависит от твоего предыдущего опыта. Если ты уверенно умеешь программировать на любом языке, это одно дело. Если нет - другое. Если ты уверенно чувствуешь себя во фронтенде и можешь, в принципе, решать задачи на голом html+css+js, это одно. Если нет - другое.

    Ничего драматически сложного в реакте нет. Нужно понять несколько концепций, посмотреть готовый код на реакте и начинать потихоньку что-то писать самостоятельно. Недели должно хватить на то, чтобы въехать в азы, а дальше уже дело практики.

    А вот если на один из вопросов выше ты ответил отрицательно, то в реакт тебе пока рано, и надо подтягивать базу.
    Ответ написан
    Комментировать
  • React: как правильно загрузить картинку(php)?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    На тег формы вешается onSubmit={this.submitHandler}, в который прилетит агрументом evt. Через evt получаем доступ к userImage. Отправить можно через axios.

    В конструкторе такой фигней страдать, да еще с jQuery это весьма годное извращение. :)

    Вообще PHP с React это не очень сочетание, как только речь зайдет про Server Side Rendering во имя Seo, вот тут и поймешь, как здорово промахнулся с пыхой на бэке.
    Ответ написан
  • Создание простого приложения на react?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Голый JS и даже с голым React это очень-очень-очень мало для построение чего-либо существенного, увы.

    Если задача стоит просто что-то наваять, то при должном упорстве и за пару месяцев можно наверное что-то сообразить. ключевое слово тут "что-то".

    Для того чтобы делать православно и годно вангую минимум полтора-два года упорства и настойчивости по 6-12 часов ежедневно, ибо собрать нужно столько граблей и набить столько шишек, что мама дорогая... Ну и еще пару десятков технологий освоить до кучи, часть из которых весьма нетривиальны, при неприлично скудной документации...
    Ответ написан
    Комментировать
  • Как начать использовать React js в своих проектах?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    React рендерится в заданный элемент, можно разные компоненты рендерить в разные элементы. Нужно отчетливо понимать, что у React совершенно другая концепция, нежели чем у jQuery.

    С jQuery ты, в основном, мутируешь DOM. С React ты конвертируешься пропсы и стейт в разметку. Поэтому требуется совершенно другой подход в разработке. В этом основная сложность.

    Если ты хочешь точечно заменять компоненты на реактовские, то реакт тебе нужно подключать отдельно, а компоненты отдельно. И придется как-то придумать, как несвязанные компоненты будут обмениваться состоянием с основным приложением и друг с другом...
    Ответ написан
  • Как быстро погрузиться в react?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Проще всего научиться на практике. Я нашел несколько годных скринкастов и повторял 1 в 1 за ведущим. Вообще всегда так делал с новым языком.

    В процессе привыкаешь, пропадает страх и туман в голове, дальше уже можно делать шаг вправо-влево и что-то своё наверчивать.

    Одна проблема в том, что реакт бурно развивается, и огромное множество материалов по нему уже устарели, т.е. ты будешь учиться тому, что уже не актуально. Поэтому ищи материалы не старше года, в идеале не старше 6 месяцев.
    Ответ написан
    2 комментария
  • С чего начать изучение современных веб-технологий?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Друже, нынче web = JS, а JS = web. Есть сферы, безусловно, где WEB как-то обходится без JS. Есть сферы, где JS применяется не для WEB. Но, в общем и целом, WEB = JS. Безусловно это мой опыт, мои наблюдения, моё мнение.

    Так вот, через пару лет при упоминании ES5 народ будет крутить пальцем у виска, поэтому, я считаю, нужно всесторонне полноценно освоить ES6+, т.е. так называемый ES.NEXT

    Для этого, в частности, необходимо зарешать алгоритмических задачек часов эдак на тысчёнку-другую, для выработки программистских рефлексов, дабы кодить на автомате, не парясь по мелочам, концентрироваться на главном, не терять времени на элементарщине.

    Проскакивать этот этап нереально и бессмысленно.

    Велкам в кодеварс или любой другой аналогичный ресурс и фигак-фигак-фигак.

    Повторюсь, рефлекс образуется после 1000+ часов однообразной деятельности.

    Регнуться можно по ссылке www.codewars.com/r/pj8ELg
    Ответ написан
    2 комментария
  • Как вы начинаете свой проект?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    мне пока хватает create-react-app
    Ответ написан
    Комментировать
  • Как верстать с использованием ReactJS?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Суть React заключается в том, что его архитектура базируется на компонентах. Как в лего, все собирается из кирпичиков.

    Далее компонент самого верхнего уровня рендерится в некоторый элемент на странице. Разные компоненты можно отрендерить в разные элементы, никто этого не запрещает.

    Так же надо отчетливо понимать, что философия React - генерировать разметку динамически при изменении стейта (состояния). Классически стейт хранится локально в каждом компоненте, однако зачастую это неудобно, поэтому придумали Flux, одной из инкарнаций которого является, в некотором приближении, Redux - некое централизованное хранилище стейта, с плюшками и балеринами.

    Насколько мне известно, React не навязывает никаких парадигм и прекрасно совместно уживается на одной странице с чем угодно, так-что, в принципе, отреактить можно только самое необходимое, а остальное запилить по старинке...
    Ответ написан
    Комментировать
  • Как организовать большой single page application?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Обратите внимание на Ember.JS, порог вхождения высокий, но оно того стоит.
    Ответ написан
    Комментировать