Ответы пользователя по тегу React
  • Как добавить декораторы в React?

    Robur
    @Robur
    Знаю больше чем это необходимо
    yarn ом вы ничего не собираете - вы просто выполняете скрипт start из package.json.
    загляните туда для начала и посмотрите чем вы действительно собираете. Скорее всего это какой-нибудь бабель или вебпак с бабелем. Хотя для flow может что-то еще не использовал не знаю.
    а потом для этого загуглите как включить флаг decorators-legacy.

    Реакт тут вообще ни при чем.
    Ответ написан
  • Как делаются запросы в React на файл php?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Как делаются запросы в React на файл php?

    Так же как и не в React - код у вас уже есть, он подойдет

    Получить инфу из php файла а не из https://......ru'


    никак.
    Можете в лучшем случае получить инфу из localhost/myfile.php.
    Ответ написан
    Комментировать
  • Каким подходом лучше воспользоваться при написании кода на React?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Бибилиотека активно развивается, каждое новое решение призвано улучшить и решить проблемы предыдущего. В настоящее время - хуки самый прогрессивный вариант. И все библиотеки довольно активно на них переходят.
    Так что если хотите создавать свежее и новое - берите их, дольше можно будет не переписывать на что-то новое :)
    Ответ написан
    1 комментарий
  • Как исправить баг в элементе Range из пакета rc-slider?

    Robur
    @Robur
    Знаю больше чем это необходимо
    скорее всего defaultValue применяется только один раз при первом рендере, потом игнорируется, когда вы категории меняете. Самый простой способ - дать Range key и менять его при смене категории.
    Ответ написан
  • Как обрабатывать Warning`и из prop-types? Как получить доступ к результату выполнения проверки типов из компонента?

    Robur
    @Robur
    Знаю больше чем это необходимо
    проверить их тип руками.
    if (typeof stringProp !== 'string') //ах-ох
    ну и дальше по потребностям и фантазии. Если надо что-то другое показывать - то можно прямо в рендере.
    или использовать https://www.npmjs.com/package/prop-types

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

    Robur
    @Robur
    Знаю больше чем это необходимо
    https://reactjs.org/docs/code-splitting.html тут все подробнейшим образом разжевано. Подробнее рассказать сложно
    Ответ написан
    Комментировать
  • Как подключить свой Js к React?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Правильно - написать параллакс на Реакте.
    Но если сильно хочется - то "прямая работа с dom в реакт" и "жизненный цикл компонента".
    Вкратце - пишите компонент - обертку, которая рендерит разметку которая нужна вашему параллаксу, когда этот компонент монтируется - получаете созданные dom - элемент(ы), вызываете свой код на этом блоке, он работает, размонтируется - делаете деинициализацию, если нужна.
    Ответ написан
    Комментировать
  • Почему axios, промисы может возвращать, а результат промиса - нет?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Почему первый вариант использования работает , а второй вариант - нет.

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

    например, в первом случае в данных будет `{data: {x:1}}` а во втором `{x:1}`

    очевидно что разные данные приведут к разным результатам.

    Промис там или не промис - дело десятое, в плане промисов оба варианта идентичны.
    Ответ написан
    3 комментария
  • Могут ли контейнеры содержать классы и разметку?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Компоненты в Реакте делятся на несколько основных групп (напишите где ошибаюсь):


    Ошибаетесь в том что в реакте компоненты делятся на какие-то такие группы. В реакте компоненты делятся совсем по другому - функциональные, на основе классов и так далее.

    на презентативные/контейнеры они делятся уже не "в реакте", а в вашем конкретном приложении, при условии что вы выбрали тот подход для построения который предлагается в статьях Дена Абрамова.
    Стоит отметить что это было просто его мнение на тот момент, а сейчас он пишет:
    Update from 2019: I wrote this article a long time ago and my views have since evolved. In particular, I don’t suggest splitting your components like this anymore.


    Можно выбрать и какой-то другой подход. И делить по другому. Или вообще на других принципах строить архитектуру. Или видоизменить его подход под какие-то свои конкретные нужны и так далее.

    поэтому ответ на вопрос:
    Если мы хотим чтобы шапка была серая, куда писать этот стиль?

    Зависит от того - как вы в итоге строите свое приложение.
    Поэтому ответ - как вы сами считаете правильным.
    Для меня критейрий прост - если вы решили делать вещи каким-то образом и через время, когда вам нужно что-то сделать в этом коде вы материтесь и страдаете - решение было неверным. надо делать по другому. Если же меняете то что нужно достаточно легко и без проблем - вы все сделали правильно.

    Когда приложение достаточно вырастет - вы сами поймете как для вас лучше, если будете обращать внимание.

    Если вам обязательно нужны формальные правила построения компонентов - определите для себя любые как больше нравится и им следуйте. Потом поменяете, если не зайдет.
    Ответ написан
    3 комментария
  • Import vs redux and react context?

    Robur
    @Robur
    Знаю больше чем это необходимо
    context - для уменьшения связности. import у вас жестко завязывает компонент с файлом где лежат данные и вы это уже никак не измените. Например тестам это крайне сильно мешает.
    redux - вообще не про то чтобы доступ к данным и импортом какого-то объекта его не заменишь.
    Ответ написан
  • Нужно ли помещать в стор все состояния компонента?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Все состояния не нужно.

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

    UI просто может отображать эти состояния каким-то образом, так же как он отображает данные когда они в сторе появляются.
    Ответ написан
    2 комментария
  • Что такое React Mock API? И как его использовать?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Что такое React Mock API?

    такого апи нет. Реакту вообще все равно ходите вы на сервер или берете данные еще откуда-то

    Можно замокать запросы и в приложении для работы без сервера, раз у вас axios, то смотрите как это лучше сделать для него.

    вот первое что попалось: https://github.com/ctimmerm/axios-mock-adapter
    Ответ написан
    Комментировать
  • Почему ошибка в React приложении и не отображается список на странице?

    Robur
    @Robur
    Знаю больше чем это необходимо
    У вас в json - не массив, поэтому все и падает.
    как исправить - либо переделать на массив, либо менять логику чтобы умела работать с тем что вы в json положили
    Ответ написан
    Комментировать
  • Можно ли получить предыдущий роут react-router-dom?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Вам надо просто при переходе с registration на login не добавить а заменить роут

    было: /main -> /solvation -> /registration
    переходите на /login, становится: /main -> /solvation -> /login

    в этом случае все работает как надо автомагически.

    Заменить роут - смотря как вы его реализовали, если через то https://reacttraining.com/react-router/web/api/Lin...
    Ответ написан
    3 комментария
  • Как исправить ошибку при работе React + Typescript?

    Robur
    @Robur
    Знаю больше чем это необходимо
    вам надо добавить в описание стейта свойство cartItems.
    скорее всего в интерфейс myState:
    interface myState {
    cartItems: ItemType[]|
    }

    ItemType естественно надо правильный подставить
    Ответ написан
    Комментировать
  • Как правильно работать со сложной структурой данных в React state?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Зачем стейт сделан так как сделан - хорошо описано в доках и всевозможных гайдах.

    Однако же, если на странице мы хотим иметь массив из 20 элементов, то мы должны их всех добавить в state по одному, как поля, иначе при изменении одной буквы в одном объекте придется менять весь массив, что представляется весьма неэффективным.


    По какому критерию "неэффективности"? как вы это померяли, какие-то цифры есть? В современных аппах столько всего происходит что создать массив из 20 элементов ничего не значит. Заметьте что элементы массива вам не надо пересоздавать, только сам массив в котором 20 каких-нибудь ссылок. Сложить две строки в одну может быть затратнее.

    Далее - не надо все пихать в гиганский стейт, и как-то его обновлять.
    Если у вас сложный стейт в компоненте - скорее всего вы что-то делаете не так.
    В компоненте должен быть необходимый ему минимум.

    Для хранения данных "вообще" есть сторы уровня приложения, откройте для себя mobx - он позволяет хранить объекты любого уровня сложности, и при этом обновлять компоненты на сколько угодно малой области изменений. В примере выше, если у вас есть массив из 20 объектов, и вы поменяли какое-то поле в одном из них - то при желании можно сделать так чтобы перерендерился и обновился только тот div который это поле рисует и ничего больше. Если вы пришли с Vue то вам будет это совсем близко.

    насчет "сложные структуры и легко сделать ошибку" - возьмите тайпскрипт и забудьте о 99% опечаток.
    Ответ написан
  • Как заставить работать jest с jsx?

    Robur
    @Robur
    Знаю больше чем это необходимо
    вот тут есть пара вариантов, попробуйте
    Ответ написан
    Комментировать
  • Как добавить в реакт библиотеки, которые нельзя установить через npm?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Ответ написан
    Комментировать
  • .useMutation всегда возвращает data undefined?

    Robur
    @Robur
    Знаю больше чем это необходимо
    А где вы ждете пока данные загрузятся?
    Ответ написан
  • Mobx: как ререндерить контейнер, передающий дочернему компоненту observable из стора?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Добавьте @observer на TodoView
    А лучше и @inject туда же.
    И выкиньте ваш Todo.
    И не перемешивайте все концепции которые вы встретили в интернете в одном коде.
    Ответ написан
    2 комментария