sapl предлагаю не сильно переживать, стиль выработается. Гайдлайнов особо нет. Мне из ваших примеров, не понравилось только: <Input error={error!=null?error.message:""}
Можно же просто:
<Input error={error} // так как если пустая строка / null, то ошибка не должна быть отрисована в норм компоненте, проверка избыточна.
Мне, например, нравится стиль, когда я большие логические куски рендера, выношу, например:
sapl, по вашему вопросу (не вижу всего, тем не менее)
- показать тот или иной диалог на действия пользователя (state), (в том числе в результате ответа api - reducer)
- показать блок с ошибкой (ошибка валидации формы, например? - state, серверная ошибка валидации формы - reducer), просто блок с ошибкой (типа уведомления - reducer)
- показать следующий блок ввода формы, после заполнения предыдущего (state, зачем тут reducer? только если у вас "следующий блок" как-то завязан на основе предыдущего + запрос на сервер)
sapl, не все нужно прокидывать через actions. У Илья Ростопка хороший ответ, я с ним согласен (про глобальные состояние, которые влияют на несколько компонентов сразу, либо просто какой-то компонент "уведомлений", например, который как раз таки нужно прокинуть через reducer)
seregindev, не могу точно ответить на ваш вопрос, так как до сих пор работаю с 3м роутером, но так как вы оформили вопрос очень грамотно, подкину несколько замечаний:
1) node_modules не нужно запихивать в github
2) такую запись можно сократить, убрав отовсюду this.state , но не забывая при этом сохранить значения в переменные:
const { author, time, theme, message }
= this.state.currentMessage
И самое главное, зачем вам такой URL? Допускаю, что это в целях обучения, но бывает выдумывание себе задачи накладывают трудности на изучение. Если стремиться к почтовикам текущим: ни gmail, ни mail.ru так не делают. Я считаю, что у вас не логично получается. Зачем прочитанные письма по отдельному URL пихать? Допустим есть у письма признак, что оно "прочитано", а у вас есть фильтр на "прочитанные / не прочитанные" - то нужно рендерить данные в зависимости от фильтра, а не делать еще один URL. В обоих веб-интерфейсах, идет /bla-bla/id_письма
А когда у вас будет более реальная задача, например показывать /sent/ID /inbox/ID (как у Gmail) - может тогда и решение будет проще.
В любом случае, о react-router 4 можно найти много информации. Хабр, гугл
Лучше всего полностью прочитать (и выполнить примеры) из офф.документации.
Илья Ростопка, а почему через Number? Достаточно же просто + поставить this.changeForm( +e.target.value) выглядит короче, преимуществ использования Number на вскидку не знаю..
Роман Александрович, вопрос "зачем" выглядит странно. Значит человеку нравится больше такой формат обучения. Не каждый может разобраться в технологии по кускам готового кода. Кому-то это просто не нравится. Mendeleev - современный видео-курс по RN найти сложновато, поэтому тут все же придется больше по докам скорее всего...
GrimJack, думаю не доделали и в этом проблема (недочистили). Попробуйте еще раз, либо может кто подскажет более годное решение. В любом случае, nodejs команды я вообще не помню, но за убунтой уже не работаю несколько лет. Так же, когда ставится node , npm ставить не нужно.
skise, вот! Я тоже про него думал. Значит вам нужно в тэг style запихивать цвет, поэтому лучше копайте в эту сторону. Вообще, я думаю у вас откуда-то проблемка идет в постановке вопроса. В javascript не может быть невозможно в любой тэг засунуть style, это же браузер... на крайняк через document на нативном js пишите.
skise, в css нельзя динамически добавить свойство в уже существующий css файл без его перезаписи, так не бывает (или я чего-то не знаю?).
Я вам описывал решение проблемы, через добавления нового класса (да, просто стринга со значением цвета). Само собой разумеется, нужно определить все необходимые классы с цветами. Если же их много и вы никак не можете использовать тэг стайл, то определяйте все до конца.
p.s. " а то я понять не могу, например у меня есть s1.s2.s3 селектор - внутри может быть много вложенных элементов. мне нужно всем им применить color: $ВЫБРАННАЯ_ВЕЛИЧИНА" - это не понял.
Антон Антон, скрипт babel можно подключить на web страницу, как обычный скрипт (то есть разницы между подключениями скрипта babel или jquery почти никакой).
Никакого сервера не нужно.
Johniq, очевидно же, что-то вызвало form submit, копайте в эту сторону, дебаггер там поставьте в коде, где enter пытались отловить и смотрите пошагово.
sergemin, у вас есть html страница, на которой присутствует тэг body, потом внутри что-нибудь еще и ваш div куда вы монтируете приложение.
Внутри этого div'a можете делать любые шаблоны для разных роутов. Если див родительский занимает всю страницу - вот вам и рецепт - как сделать разное оформление для всей страницы по разным роутам. При этом css будет общий, просто разные классы используйте.
Если хотите использовать одинаковые названия классов, но при этом, чтобы не было конфликтов - используйте css modules (не работал с ними подробно, подсказать особо не могу, меня устраивают обычные классы и общий css на все приложение).
<Input error={error!=null?error.message:""}
Можно же просто:
Мне, например, нравится стиль, когда я большие логические куски рендера, выношу, например:
и там уже внутри, например
Если условие подходит под switch, то switch...
А кто-то любит писать (или если маленькое условие) сразу:
{isLoading && <Loading center />}