Bogdan
падажжи, а FirstStep, SecondStep, ThirdStep (дурацкие названия) - одинаковые по верстке?
абсолютно разные могут быть, жто пробный просто вариант
Bogdan
Так ты же можешь роутингом контролировать
что именно контролировать? я сейчас исходя из роута показываю нужный таб и смотрю редактирование ли, но сам компонент он один
Bogdan
https://codesandbox.io/s/tender-architecture-cdl16 вот тут можно пожмакать, работает все, но меня смущает написание страницы FormSteps
Andrew
ребят
Andrew
есть тут кто не спящий?
Andrew
В общем, такая проблема ( возможно нубская )
Andrew
у меня есть 1 компонент, собсно опросник. И внутри есть есть Stepper ( прогресс бар с кнопкой далее )
Andrew
И вот, когда юзер доходит до последнего вопроса, кнопка далле должна стать кнопкой готово
Andrew
и всё бы хорошо, но!
Andrew
Эту проверку мне нужно делать в componentDidUpdate или render или подобном хуке
Andrew
но если я меняю там стейт
Andrew
это запускает бесконечный цикл ререндера
Andrew
есть какой-то типичный солюшн для этого ( когда нужно менять стейт на каждом шаге ререндера одного и того же компонента )
Andrew
P.S. forceUpdate не помог
MVD
а что ты в стейте хранишь?
MVD
а лучше кодл компонента покажи
MVD
О господи
MVD
Теперь мне будут кошмары сниться
Andrew
Теперь мне будут кошмары сниться
ну а как это правильно сделать?
MVD
Во первых стейт меняется с помощью setState
Andrew
Во первых стейт меняется с помощью setState
почитай вопрос, пожалуйста
MVD
почитай вопрос, пожалуйста
У тебя переменная this.isLastStep не меняется. Конечно вечный цикл будет. Но никто не пишет код так как ты
Andrew
и на послденем шаге она меняеться
Andrew
и вот
Andrew
начинаеться пиздец
MVD
переменная lastStep береться из пропсов
Тебе не надо в стейте хранить это. Просто условие в рендере сделай и все. Если lastStep рисуешь одно, иначе другое
Andrew
ебать я дебил
Andrew
ахахах, чёто даже не подумал об этом
Andrew
серьезно
Andrew
без сарказма, рил спасибо!)
MVD
без сарказма, рил спасибо!)
И в 99 случаях из 100 можно без forceUpdate обойтись. Если нет, значит ты чтото пишешь не так
Andrew
И в 99 случаях из 100 можно без forceUpdate обойтись. Если нет, значит ты чтото пишешь не так
это понятно. Ну тут через setState никак нельзя было сделать
Andrew
и вот условия на рендер разных елементов, да. Тут я тупонул жестко
Ruslan
Ruslan
Ребят,подскажите почему?:/
Rem1te
Ребят,подскажите почему?:/
Потому что значение по умолчанию пустой объект, и нигде не меняется
Ruslan
Потому что значение по умолчанию пустой объект, и нигде не меняется
в react.tools, показывает нормальный стейт,который меняется. Может ли быть проблема в mapDispatchToProps?
🅅aleriy
что за название для редьюсера removeBook? :)
Ruslan
что за название для редьюсера removeBook? :)
Тестовое) лучше помогите🙃
🅅aleriy
Тестовое) лучше помогите🙃
так а чем помочь если у тебя нет даже малейшего понимания что такое стейт приложения, редакс и вообще
Vladimir
Помогите с cross-env, нужно чтобы при билде менялась переменая в app.js
Vladimir
и при чем тут реакт канал?
cross-env вшит в "react-create-app", поэтому и спрашиваю, может кто разбирался с ним
Unknown
Посоветуйте простенькую библиотеку для Реакт ui
Nikita
Semantic UI
🅅aleriy
cross-env вшит в "react-create-app", поэтому и спрашиваю, может кто разбирался с ним
все что вшито в cra очень подробно описано в доке, твой вопрос ни о чем просто, не понятно что ты хочешь
Anonymous
cross-env вшит в "react-create-app", поэтому и спрашиваю, может кто разбирался с ним
https://facebook.github.io/create-react-app/docs/adding-custom-environment-variables вот здесь вроде бы все достаточно понятно описано. Если вам нужно разное значение переменной в зависимости от среды, то в коде можно так написать: const variable = process.env.NODE_ENV === 'production' ? 'prod_value' : 'dev_value'; Но по хорошему такие переменные должны быть в конфигах и в зависимости от среды вы должны подгружать один или другой конфиг, возможно еще мержить его с каким-то общим, зависит от проекта.
Vladimir
Всем спасибо, разобрался немного, оказалось не получиться сделать то-что я захотел так-как импорт модуля нельзя взять из переменой.
🅅aleriy
лучше просто скажи что хотел, может есть другое решение проще
Vladimir
что значит взять импорт модуля из переменной?
import connect from 'asd' + process.env.NODE_ENV ;
Vladimir
Разные модули в зависимости от prod или dev среды
🅅aleriy
ну это по другому решается
🅅aleriy
а вообще можно и с переменной
artalar
Подкиньте интересный пример на редаксе с хуками
MVD
import connect from 'asd' + process.env.NODE_ENV ;
Динамический импорт умеет
Tray
Ку. Подскажите пожалуйста... Сейчас почитал про редакс. Везде пишут, что в редакс не нужно делать всяких сайд эффектов (на вроде http-запросов). Ок, тогда где их делать? Основной statefull компонент и так достаточно большой получился. А если туда ещё и логику запросов накидать, то вообще слишком много получится.
🤴👷‍♂️🦸‍♂️🧚‍♀️
Где?
Redux thunk
Tray
Спасибо
🤴👷‍♂️🦸‍♂️🧚‍♀️
Можешь брать ещё саги, аполо, релэй, что угодно. Если правильно понял
artalar
Там все ОЧЕНЬ подробно описано. В нее вложено масса сил
Tray
Пожалуйста, посмотрите официальную документацию
Я пока наверное не добрался. Реакт пару недель назад начал изучать, а приложение на работе уже сейчас нужно. Спасибо за подсказку)
Андрей
Что то не понял, я вот про редакс. Есть стор const initialState = { isStartQuiz: false }; И действие const startQuiz = () => ({type: 'START_QUIZ'}); В редьюсере я возвращаю объект который надо заменить в сторе. return {...state, isStartQuiz: !state.isStartQuiz}; А где писать логику дополнительную, к примеру что мне надо на body повесить класс .start-quiz ?
Андрей
В компоненте где вызываешь экшен
На кнопку вешаю слушатель на клик onClick={() => startQuiz()} туда же записать обработчик этого клика? Например так onClick={() => startQuiz() this.handleClick() } ?
Андрей
Ну я через коннект передал в пропсы эту функцию const startQuiz = () => ({type: 'START_QUIZ'}); А как помимо тайпа сделать еще что то ?
Андрей
Андрей
Вот такой темплейт, я не пойму куда писать доп логику
Dimitri
middleware