@react_js

Страница 353 из 5115
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
Пропсы прям роут кидать пробовал?
Да, <Route component={GeneralLayout} show={false}> - не отработало =(

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

component={<GeneralLayout show={false} />}

Slava
03.08.2016
20:32:55
Я вот забыл, а не умеет ли роутер в предоставление текущего пути в первый компонент?
<Route component={GeneralLayout} show={false}> <Route path="/" component={App}/> </Route> разбить на: <Route > <GeneralLayout show={false}> <Route path="/" component={App}/> </GeneralLayout> </Route> ?

Ilya
03.08.2016
20:33:24
Не.

Slava
03.08.2016
20:33:27
component={<GeneralLayout show={false} />}
А, понял, попробую

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
А про передачу, я говорю, что есть такая фишка, которая позволяет посмотреть текущий путь компоненте, который в <Route component={???} /> идёт.
Да, но хотелось бы управлять этим из роутера. Я в итоге по пути сейчас смотрю. Но кажется что это неправильно. Компонента не должна отображать инфу в зависимости от пути, не ее зона

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
@Misaka, есть)
Ты про сборочку?

Там вроде более удобное обращение с хидерами, и корсы просто устроить.

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

да, про нее

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

Tim
04.08.2016
07:19:54
самое логичное это по разным доменам разнести.
типа то что нужно фронту на один домен, а все запросы для получения данных из базы на другой домен я правельно понял? и это все делается на ngnix?

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

yep

Alex
04.08.2016
07:20:16
Все остальное это заботы этого самого API

Да, просто вынеси api на отдельный домен для собственного удобства.

Я надеюсь у вас фронт и бэк архитектурно не связаны?

Страница 353 из 5115