
Ilya
03.08.2016
20:27:30
Пропсы прям роут кидать пробовал?
Когда его вешаешь?

Slava
03.08.2016
20:27:42
Практический пример - в лайоуте хедер, в хедере кнопка помощь. Отображать только на страницах /login /signin

Ilya
03.08.2016
20:28:50
Я вот забыл, а не умеет ли роутер в предоставление текущего пути в первый компонент?

Google

Ilya
03.08.2016
20:29:31
Оу, там последний раз были контексты…

Slava
03.08.2016
20:31:07

Ilya
03.08.2016
20:31:41
А <GeneralLayout show={false} /> пробовал?
component={<GeneralLayout show={false} />}

Slava
03.08.2016
20:32:55

Ilya
03.08.2016
20:33:24
Не.

Slava
03.08.2016
20:33:27

Ilya
03.08.2016
20:33:42
И это тоже навскидку, я никогда так не делал в коде.
А про передачу, я говорю, что есть такая фишка, которая позволяет посмотреть текущий путь компоненте, который в <Route component={???} /> идёт.
Но она на контексте(или hoc) сделана.

Slava
03.08.2016
20:35:03
ТОгда browser.js?9520:40Uncaught Invariant Violation: The root route must render a single element

Ilya
03.08.2016
20:35:20
!
Попробуй сделать там stateless.

Google

Ilya
03.08.2016
20:35:57
(show = false) => <Component show={show} />
Тьфу

Slava
03.08.2016
20:36:12

Ilya
03.08.2016
20:36:36
(props) => <Component {…props} show />
Во.

Slava
03.08.2016
20:40:03
О! Вроде работает!
А можешь в двух словах подсказать как эта магия сработала? =)

Ilya
03.08.2016
20:42:36
() => < /> это state-less компоненты.
Которые сделаны как стрелочные функции.
const myStCom = ({ color }) => <div>I’m {color}!</div>
myStCom - это та самая функция, ссылка, называй как хочешь. Т.е. ещё не пременена.
jsx умеет определять, что у тебя такая функция - это валидный компонент. И применять соответствующие правила.

Slava
03.08.2016
20:44:45
стрелочные функции - понимаю - анонимная функция с удобным синтаксисом.
state-less компоненты - не понятно. У этой GeneralLayout есть state. Или внутри это как обертка над GeneralLayout разворачивается?

Ilya
03.08.2016
20:45:17
Иными словами
const myComp (props) => <Comp {…props} />;
<Route component={myComp} />
Ты не понял.
Stateless не твой GeneralLayout.

Slava
03.08.2016
20:45:47
Аааа, кажись дошло

Ilya
03.08.2016
20:46:03
stateless это сама эта функция, которая не имеет стейта, принимает только пропсы и отдаёт любой компонент.
Это как React.Component сплющеный до одного render();

Slava
03.08.2016
20:46:38
Я мог описать в отдельном файле
GeneralLayoutComponentWrapper = (props) => (
<GeneralLayout show={false}>
);
И в роутере включить его.
А так получилось это инлайн. Так?

Ilya
03.08.2016
20:46:44
Соответственно, если ты просто хуячишь такой компонент прямо так, component={() => {}};
реакт получает эту функцию и дёргает её.
Не забудь только развернуть пропсы в <GeneralLayout />
Чтобы не потерять инфу свыше.

Google

Ilya
03.08.2016
20:47:24
Да.
Потому что есть определение функции, нет вызова. Значит реакт вызывает её внури.

Slava
03.08.2016
20:48:27
Щииикарно! Понял. Про определение функции знал. В единую картинку теперь сложилось

Ilya
03.08.2016
20:48:56
Но в реакт роутере играться с этим особо не стоит.
Есть моё такое мнение.

Max
04.08.2016
06:43:41
Доброе утро. Подскажите пожалуйста что не правильно делаю.
const essay = nextProps.essay || this.props.essay;
ожидаю: если nextProps нет, то присваивать this.props

Anton
04.08.2016
06:44:52
если нет nextProps - все сдохнет. Если нет nextProps.essay - все будет ок

Никита
04.08.2016
06:45:01
дак nextProps undefined
от undefined не может взять essay

Max
04.08.2016
06:46:04
const essay = (nextProps) ? nextProps.essay : this.props.essay;

Anton
04.08.2016
06:46:07
cost {essay}=Object.assign({},this.props,nextProps) - железобенный костыль

Max
04.08.2016
06:46:55
я думал раз nextProps undefind то должно присвоиться this.props

Renat
04.08.2016
06:47:50
const essay = (nextProps) ? nextProps.essay : this.props.essay;
Мне больше этот вариант по душе)

Max
04.08.2016
06:49:01
мне тоже)

Anton
04.08.2016
06:49:07
Для одного свойства такая конструкция оптимальна, для кучу - лучше чем assign/extend и так далее. В общем по старинке.

vitaliy
04.08.2016
06:50:32
nextProps && nextProps.essay ||this.props.essay

Renat
04.08.2016
06:50:48
Скорее соглушусь, но я бы не стал работать с кучей свойств в рамках componentWillReceiveProps

localvoid
04.08.2016
06:52:02
const essay = (nextProps || this.props).essay;

Anton
04.08.2016
06:52:25
Совсем хорошо

Google

Anton
04.08.2016
06:52:30
(а тут стикеры можно?)

Никита
04.08.2016
06:52:30
ваще красиво

Renat
04.08.2016
06:54:53
вишенка на торт:
const { essay } = (nextProps || this.props)
@localvoid

Max
04.08.2016
06:56:30
да, действительно, прелесть)
всем спасибо)

Tim
04.08.2016
07:07:13
Доброе утро, уже отвечали но не могу найти где, а сам забыл.
Роутинг приложения происходит в реакт-руотере, на бэке PHP, кажется laravel, как сделать чтобы при обновлении страницы не получать 404. Я понимаю что бэк должен подменить любой роут и отдать /index.html Но как это называется как объяснить бэку что нужно сделать?

Admin
ERROR: S client not available

Alex
04.08.2016
07:07:47
через nginx разрулить
должен быть один какой то базовый роут типо начинающийся с /api
и все остальное nginx должен отдавать фронт
если SPA.
либо вообще по доменам разнести что лучше.
api.domain.com
а по domain.com всегда отдавать фронт/пререндер

Tim
04.08.2016
07:14:05
ого а без nginx нельзя седать, типа как в ноде там как-то просто делается на любой роут (*) => /index.html

Alex
04.08.2016
07:14:53
зачем смешивать бэк и фронт?
я как то пытался подружить рельсы и фронт и понял что будет как минимум очень неудобно и не будет метатегов в SPA

Andrey
04.08.2016
07:15:23
да, лучше на nginx это сделать)

Google

Alex
04.08.2016
07:15:23
поэтому мы их разнесли.
самое логичное это по разным доменам разнести.
там будут разные логи обращения к сайту и к апишке тогда, например.

Ilya
04.08.2016
07:16:41
Есть где-то даже конфиг уже написаный.
И сборочка nginx пропатченная под rest-api, я правда не знаю, есть ли от неё особая польза.

Renat
04.08.2016
07:17:54
@Misaka, есть)

Ilya
04.08.2016
07:18:31
Там вроде более удобное обращение с хидерами, и корсы просто устроить.

Renat
04.08.2016
07:18:50
в случае изоморфного рендеринга можно нодой запросы проксить
да, про нее

Ilya
04.08.2016
07:19:15
Я юзал её два года назад последний раз, почему-то подумал, что всё это в nginx уже завезли.

Tim
04.08.2016
07:19:54

Renat
04.08.2016
07:19:55
Не могу ничего на этот счет сказать
yep

Alex
04.08.2016
07:20:16
Все остальное это заботы этого самого API
Да, просто вынеси api на отдельный домен для собственного удобства.
Я надеюсь у вас фронт и бэк архитектурно не связаны?

Tim
04.08.2016
07:21:56