Archakov
Всем привет. Подскажите, правильно ли понимаю, если говорить о сторонних библиотеках, то желательно искать реализации такой библиотеки именно под React? Например, если люди говорят об использовании React совместно с Bootstrap, то они вероятнее всего имеют ввиду библиотеку реализованную специально под React, т.к. в оригинальном Bootstrap используется jQuery что потенциально может привести к конфликтам с React при совместной управлении DOM. Правильно ли я всё понимаю?
Не всегда. В данном случае желательно, но реакт спокойно может работать и не с реактовскими библиотеками. Например, я юзал react-ace в своем реактовском приложении, который загружал моё приложение лишними библиотеками. В итоге, из 700кб, получалось 3-4мб приложение. Пришлось отдельно через <script> подключать то, что мне было нужно.
Archakov
Чаще решение уже написано под реакт, но бывают исключения и нужно проверять такие моменты тоже
Stanislav
Всем привет! Поделитесь мнением: 1. Что лучше использовать для компонентов: классы или функции? 2. Почему такой выбор? Мне нравятся классы, но если функции лучше, буду рад узнать почему и вообщем ваше мнение! Спасибо)
Igor
каждый день одно и то же)
Stanislav
каждый день одно и то же)
Каждый день новые вопросы, новые идеи, новые знания. В этом смысл развития) Поэтому я и задаю здесь вопросы
Igor
Каждый день новые вопросы, новые идеи, новые знания. В этом смысл развития) Поэтому я и задаю здесь вопросы
всё те же самые вопросы, которые легко гуглятся или в доке написаны даже русским языком 😉
Stanislav
всё те же самые вопросы, которые легко гуглятся или в доке написаны даже русским языком 😉
Есть машины с ручной и автоматической коробкой передач, и каждый выбирает из этого что-то своё. И интереснее спросить почему человек сделал такой выбор, нежели опираться только на то, почему так было задумано
Stanislav
то есть, вам нужно одобрение общества, а не то, что используется в доке?
Мне интересно мнение знающих людей, которые, если пишут компоненты функциями, знают зачем и почему
Igor
А самому попробовать то и другое никак?
Stanislav
Stanislav
А самому попробовать то и другое никак?
Пробовал, потому и написал в своём вопросе ниже, что нравятся классы
Китикет
Можешь объяснить почему?) То, как ты это видишь, буду благодарен!
Еще раз, тут не надо ничего видеть) Функциональные компоненты получаются намного короче, а логика в них не разбросана по методам в хаотичном порядке, а нормально скомпанована по группам
Китикет
А вообще это просто гуглится Why functional components is better То что я перечислил, это 10%
Stanislav
А вообще это просто гуглится Why functional components is better То что я перечислил, это 10%
Хорошо. Из доки я помню, что классы лучше функций из-за жизненных циклов. Тогда вопрос, придумали ли их для функций, если они необходимы?
Stanislav
У вас старая дока в голове. Попробуйте новую почитать
Я говорю сейчас про reactjs.org. Она устаревшая?
Stanislav
Придумали, гуглите хуки (react hooks), вернее сразу в доке про них читайте
Я так полагаю, это именно то, о чём идёт речь? https://ru.reactjs.org/docs/hooks-intro.html
Китикет
Китикет
Haotichno rasbrosana vnutri funcii
Ну если ты специально разбрасываешь, то да А большинство нормальных разрабов не любители такого)
Китикет
Нормальные разрабы и в методах могут нормально писать логику
Что бы ты там не писал, ограничений в плане композиции это не снимает, пора уже посмотреть пару докладов по этому поводу, а также почитать доку
N
Привет. Можете подсказать в какую сторону копать. Есть компонент логина, который после успешной обработки поменят стор. Как теперь перерисовать компонент хедера (убрать логин роутер)
Stanislav
Ребят. Ещё пара вопросов плиз) 1. Что вы думаете о методологии S.O.L.I.D.? Если это вообще методология. 2. Можно ли выводить название компонента из переменной? Например есть массив: ['Home', 'About', Contacts] и через map.(page =>...) выводить как <page />? Ну или как-то так, важно не хранить сам компонент в массиве. Спасибо!
Evgen
Ребят. Ещё пара вопросов плиз) 1. Что вы думаете о методологии S.O.L.I.D.? Если это вообще методология. 2. Можно ли выводить название компонента из переменной? Например есть массив: ['Home', 'About', Contacts] и через map.(page =>...) выводить как <page />? Ну или как-то так, важно не хранить сам компонент в массиве. Спасибо!
1) Это принципы проектирования программного обеспечения. В том или ином виде будешь с этим сталкиваться. 2) Тебе в любом случае нужно каким-то образом преобразовать Текст в Компонент - соответственно самый простой способ - хранить ссылки на компоненты в json по ключ: значение(ссылка на компонент)
Artem
Всем привет, правильно я понимаю понятие экспорта и импорта функции (допустим взятие текста с URL), если я экспортирую функцию из файла и импортирую в другом, то при каждом рендере эта функция не будет создаваться заново в памяти, а браться из кэша или как?
Evgen
Всем привет, правильно я понимаю понятие экспорта и импорта функции (допустим взятие текста с URL), если я экспортирую функцию из файла и импортирую в другом, то при каждом рендере эта функция не будет создаваться заново в памяти, а браться из кэша или как?
Импорт/экспорт тут не при чем. Будет работать так же как и с "локальными" функциями. Т.е. если функция объявлена вне рендера, то при выполнении рендера с простым вызовом функции новая функция не создается.
eden
подскажите, что не так с хуком. toggle всегда оперирует с пустым массивом, хотя должен сохраниться с предыдущих запусков заполненный
Alex
Ребят. Ещё пара вопросов плиз) 1. Что вы думаете о методологии S.O.L.I.D.? Если это вообще методология. 2. Можно ли выводить название компонента из переменной? Например есть массив: ['Home', 'About', Contacts] и через map.(page =>...) выводить как <page />? Ну или как-то так, важно не хранить сам компонент в массиве. Спасибо!
1. Это аббревиатура которая тебе пригодится только для собеседований. Разумеется она несет за собой глубокую мудрость. Но это как "паттерны проектирования", то есть эта мудрость недостаточно строга чтобы быть теоретической основой но слишком искуственна чтобы быть полезными практическими правилами. А на собеседованиях любят спрашивать, когда "че бы еще такое спросить-то".
eden
[selected]
поправил, всё равно не работает
Китикет
Еще может быть проблема в том, как ты toggle используешь во внешнем коде
eden
useCallback должен возращать функцию из колбека
https://github.com/streamich/react-use/blob/master/src/useToggle.ts вроде здесь так же
Maxim
const toggle = useCallback( (nextValue?: any) => () => { if (typeof nextValue === 'boolean') { setValue(nextValue); } else { setValue(currentValue => !currentValue); } }, [setValue] );
Китикет
if (something) { setValue(something2) } else { setValue(something 3) } кстати можно упростить в const newValue = something ? something2 : something3 setValue(newValue)
eden
ага, спасибо
eden
всё, разобрался
eden
при использовании надо менять колбэк в зависимости от selected
Maxim
useCallback не так работает
Точно пардонте
Китикет
Где твой еслинт) Он бы сказал что тоггл нет в зависимостях
eden
Где твой еслинт) Он бы сказал что тоггл нет в зависимостях
у меня eslint на этом проекте очень странно себя ведёт. Возможно из-за того что пол проекта на TS, а пол - на JS
Китикет
Потому что иначе тебе придется синхронизироваться с зависимостями toggle, а там в будущем может появиться что-то кроме selected, при чем возможно это что-то не будет доступно во внешнем коде, а значит иногда будут старые toggle во внешнем коде
eden
хм, хорошо, спасибо
Китикет
Да и даже логически selected не используется в том колбеке, получается этот код должен знать о том, что под капотом в том хуке, а это уже неправильно
Михаил
Всем привет. Задам может быть очень простой вопрос, но всё же, мне не понятно) constructor() { что это за фигурные скобки? }, что эта запись с фигурными скобками означает?
Михаил
мне просто не понятно само подобное объявление (без разницы, конструктор или что то другое), как оно работает, почему запись такая?) Что мне почитать по этому вопросу?
Михаил
Спс))
Михаил
Но всё таки, какую тему почитать?
Maxim
Но всё таки, какую тему почитать?
Основы програмирвоания)
Михаил
Конкретнее)
Maxim
Конкретнее)
ну с самых азов
Михаил
Тему пожалуйста)
Maxim
да это и есть тема
Igor
Конкретнее)
https://learn.javascript.ru/function-basics
Михаил
https://learn.javascript.ru/function-basics
Просмотрел быстренько, ответа не нашёл... Код function check() {} мне понятен, а вот код check () {}, не понятен...
アレクサンダー・バキマトフ
Просмотрел быстренько, ответа не нашёл... Код function check() {} мне понятен, а вот код check () {}, не понятен...
чувак пойди почитай про поля классов и не оффтопь пожалуйста, это все таки чат по реакту
アレクサンダー・バキマトフ
Потому что это основы основ
та у него шаблон рвется от того что ключевого слова function нету)
Maxim
та у него шаблон рвется от того что ключевого слова function нету)
ну если он щас на классах то впринципе вероятнее всего) хотя вдруг он вобще сразу с класов начал
Umirzak
Ой