• Как правильно задать путь к файлу и компоненту?

    rockon404
    @rockon404 Куратор тега React
    ArturPetrov, опечатка же. Поправил. Вы то сами ведь знаете, как должен выглядеть закрывающий тэг. =)
  • Как правильно задать путь к файлу и компоненту?

    rockon404
    @rockon404 Куратор тега React
    ArturPetrov, во-первых уберите точку в path:
    <Route exact path="/comment" component={Comment} />

    во-вторых, роутер работает не с нативными ссылками, а с компонентом Link:
    import { Link } from 'react-router-dom';

    <Link to="/comment"> Коментарий </Link>
  • Как правильно задать путь к файлу и компоненту?

    rockon404
    @rockon404 Куратор тега React
    ArturPetrov, в том-то и дело, что нет никаких JavaScript страниц. Ваш сервер отдает html с бандлом приложения по всем нестатическим маршрутам. Вам стоит разобраться с основами HTTP. Заодно можете почитать про Webpack и Webpack DevServer. create-react-app использует react-scripts, а react-scripts, в свою очередь, довольно сложную конфигурацию webpack и упомянутый выше Webpack DevServer.

    Клиенсткий роутинг это так?

    Да. Только пишите пути в нижнем регистре.
  • Как на react.js взаимодействовать с php?

    rockon404
    @rockon404 Куратор тега React
    #, да) Поправил.
  • Как правильно рендерить страницы в реакт?

    rockon404
    @rockon404 Куратор тега React
    Владимир, у инструментов разное назначение. Redux - хранилище состояния и имеет соответствующий интерфейс для его изменения, получения и подписки на обновление, а react-redux набор удобных инструментов для использования с React. Context API - позволяет лишь удобно передавать какие-то значения вниз по древу. Использовать его для полноценного state management реально, но неудобно. В то же время, использовать Redux для передачи какого-нибудь статичного isMobile и browser - оверхэд.
    По-хорошему, каждому инструменту своя задача.
  • Как правильно рендерить страницы в реакт?

    rockon404
    @rockon404 Куратор тега React
    hzzzzl, Владимир, на самом деле очень удобно. Используем сейчас для передачи device в SSR приложении:
    const Foo () => {
      const { isMobile, device } = useContext(MainContext);
      reutrn ( ... );
    };

    До этого еще в кроссплатформенном коде для чего-то вроде DI использовали. Когда прокидываешь в разных точках входа разные компоненты под одним и тем же ключом в контекст. На выходе имеешь универсальный код.
    const Foo = props => {
      const { Foo: F } = useContext(MainContext);
      return <Foo {...props} />;
    };

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

    Ну и многие библиотеки так же используют контекст: react-router, styled-components, react-i18next и прочие.
    Назначение у Context и Redux как не крути разное.
  • Почему webpack ругается на импорт React компонента?

    rockon404
    @rockon404 Куратор тега React
    А что у вас в webpack.server.js?
  • Правда ли что рынок веб разработки "перегрет"?

    Василий Берестов,
    ваша инфоцыганская пропаганда в стиле "ДАВАЙТЕ ВСЕ В АЙТИ!111" не имеет ничего общего с обменом опытом.

    Вы о чем? Какая пропаганда?
    То, что я озвучил в ответе на прошлый вопрос, можно разбить на три утверждения:

    1. Опытных квалифицированных специалистов не хватает.
    2. Работу, если ты являешься частью вышеупомянутой группы найти очень легко, а зачастую хорошая работа сама тебя ищет.
    3. Рынок перенасыщен людьми с низкой квалификацией, многие из которых пришли в IT за деньгами, каждый день насилуют свой гуманитарный склад ума, не замотивированы учиться и частично со временем отвалятся.

    А что про обмен опытом, я лишь поправил вас, вы утверждали, что в других сферах его нет. Это не правда.

    Вы сами поощряете наплыв в индустрию огромного числа народа, а потом жалуетесь.

    Пока единственный человек, который жалуется по этому поводу - это вы. Я только за появление новых квалифицированных специалистов. А конкуренция является отличным мотиватором к развитию.

    Нашел тут кое-что на просторах интернета:
    spoiler
    download?id=r6FrtP23UOxKRVTURp3gzUnFXEPd

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

    Все это в совокупности просто поиск оправдания вашему незавидному положению. Где вы сами все пустили под откос, не можете больше оставаться в ненавистной сфере, которая стала для вас золотой клеткой, не решаетесь что-то менять и боитесь, что вас скоро заменят молодым и подающим надежды.

    Хороший комментарий из той же темы:
    spoiler

    download?id=7sTJw8uVSNQAIuy5C6Qp71Sl2SPN


    Что-то подобное вам не один человек и тут написал. Я бы на вашем задумался.
  • Правда ли что рынок веб разработки "перегрет"?

    Вот эти ребятки, что в этой теме отметились, они настолько все туповатые, что сами себе роют могилу, крича на весь интернет о "дефиците". Сами того не понимая, плодят себе конкурентов. Для примера - зайди на какой-нибудь бизнес-форум и спроси у любого пользователя, кто бизнесом занимается - "как ты деньги зарабатываешь?" - ни один идиот тебе не раскроет секрет. Никогда. Это только у айтишников так принято - трубить на всю ивановскую о дефиците. А лет через 10 большая половина этих обезьянок пойдет в такси работать, ибо рынок будет безбожно переполнен людьми с вполне обычными знаниями.

    Абсурд. Обмен опытом существует и является хорошей практикой, почти во всех сферах. Аналогия с бизнесом тут некорректна.

    Вот смеху то будет, когда после 10 лет упорного труда

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

    Удлинитель же в комплекте раньше шел?
  • Возможно ли с помощью hooks создать полноценную замену классовым компонентам?

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

    Аргументы в подобных случаях, к сожалению, не всегда работают.

    Повторюсь, если вы что-то не поняли из предыдущего комментария:
    1. Антипаттерном называли совершенно другой кейс. Попробуйте сделать небольшое исследование и узнать почему. Глупо принимать что-то за истину не попытавшись понять причины.

    2. Для вызова эффекта по получению и изменению маршрута/параметров/search достаточно одного хука, который будет вызываться только при инициализации и изменении переданных свойств:
    const { search, pathname } = location;
    const { slug } = match.params;
    
    useEffect(() => {
      // do something
    }, [pathname, search, slug]);


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

    4. Для контроля перерисовки древа существует множество инструментов и приемов. Хотя бы React.memo, connect, композиция и тд.

    5. Хуками вас никто пользоваться не заставляет, а классы никуда из React не уходят.

    6. Аналогия со здоровым образом жизни некорректна.

    7. Вижу добавили правку насчет массивов и оптимизации. Вы серьезно? Единственный хук useState возвращает массив из двух элементов. О какой оптимизации тут может идти речь? Смотрю в ход пошли откровенно надуманные проблемы.
  • Возможно ли с помощью hooks создать полноценную замену классовым компонентам?

    rockon404
    @rockon404 Куратор тега React
    Fengol,
    Видите накартинке вышеопределен хендлер?Ведь он будет каждый раз при обновлении заного определеяться, а это если вы помните, считается антипаттерном реакта. Даже если я сохдам ещё эффект и укажу ему что необходимо обновлятся только при смене параметров роутера, то хендлеры и другие объекты все равно при обновлении будут пересоздаватся.

    По поводу антипаттернов написал выше. Без понимания что и почему, это слово применять не корректно.
    Хандлер можно обернуть в вызов useCallback. Это предотвратит ненужные обновления дочернего древа.
    Сложную логику не связанную с компонентом можно вынести. Дополнительные расходы на инициализацию анонимной функции минимальны.
    Ну и для нестандартных задач вы всегда можете использовать классы. Доступ к this в хандлерах и к предыдущему состоянию - порой очень удобен. Хотя и первое и второе легко решается и с хуками.
  • Возможно ли с помощью hooks создать полноценную замену классовым компонентам?

    rockon404
    @rockon404 Куратор тега React
    Fengol,
    прикольно!не заставляют переписывать старое, а рекомендуют писать новое. Этопо вашему не тоже самое что просто сказать забейте на классы - пишите с хуками?

    Не то же самое. Это лишь рекомендация. Создателям React важен опыт применения хуков и отклик сообщества. Пока отклик во многом положительный. Они правда очень удобны.
    В новых проектах использую и классы и хуки. Есть ряд кейсов где классы по мне читаимей и удобней.


    Тогда скажите, как же теперь узнавать об изменениях когда роут изменяется?

    componentDidUpdate, useEffect.

    как узнать об обновлении если один эффект не реагирует?

    Понять причину почему он не реагирует и исправить.

    Создать ещё один? Ну тогда при каждом изменении дома будет вызываться второй эффект и тем самым невилирует первый. Кроме того тело компонента тоже будет каждый раз вызываться?

    Простите тут я вас вообще не понял. Не надо писать эффектов, которые будут вызваться каждый render, если в этом нет необходимости. Главное, что вызов эффекта не подразумевает перерисовку компонента, если вы не изменяете в нем состояние.

    Это значит что каждый раз будет переинициализация всего.

    Чего всего? У вас как у разработчика в распоряжении множество приемов как свести вычисления к минимуму.
    Неспособность конкретного разработчика справляться с подобными задачами, не делает Hooks API плохим.

    А это ещё хуже чем то, что раньше называли антипатерны при передачи объектов и стрелочных функций непосредственно в шаблоне.

    Тут стоит попробовать подумать почему инициализацию стрелочных функций в render так называли, в каких конкретно кейсах и чем они отличаются от случая с хуками. Понятное дело, что хуки подразумевают дополнительные расходы, но они минимальны.

    Где я не прав?

    Везде.
  • Как сверстать такой пост?

    Возможно, автор не слышал о существовании клиентского рутинга.
  • Как добавить исключение тип для jsdoc в phpStorm?

    rockon404
    @rockon404 Куратор тега React
    React точно есть в зависимостях?
    Плагин сторонний?
    У меня в Webstorm цветной подсветки нет, но все типы которые есть в зависимостях и проекте определяются.
  • Как решить данные вопросы по реакту?

    rockon404
    @rockon404 Куратор тега React
    Егор Грубов, да, вы можете в этом сами убедиться если посмотрите ответ сервера или откроете исходный код страницы.
    По поводу "нигде не хранить" вам этот вариант не подойдет. Попробуйте реализовать хранение по примеру VK в HTTP Only Cookies.
  • Сайт на React JS vs. Продукция Apple?

    rockon404
    @rockon404 Куратор тега React
    Чем код собираете? Полифиллы используете?
  • Как правильно сообщить компоненту Movie, что тот или иной фильм рекомендован?

    rockon404
    @rockon404 Куратор тега React
    lexstile, тут все зависит от сложности вашего приложения, потенциального количества перерисовок списка при использовании и количества рекомендаций.
    Если перерисовок минимум, а рекомендаций с десяток, то ничего страшного в вычислениях при рендере списка нет.
  • Возможно ли с помощью hooks создать полноценную замену классовым компонентам?

    rockon404
    @rockon404 Куратор тега React
    Korifa, ясно. Попробуйте разбить задачу на два эффекта.