Size: a a a

React: русскоязычное сообщество

2018 March 11

AG

Alex G in React: русскоязычное сообщество
Pavel
Строка с названием компонента.
Вариант заменить строку на компонент мне вполне подходит. Конкретно, сейчас такой потребности нет. Это на будущее.
babel заменяет JSX на React.createElement()
Логика простая:
 если тэг начинайться с большой буквы - то он считает это компонентом и передает в createElement первым аргументом переменную с таким же именем.
 если с маленькой - то первый аргумент строка.

Тоесть:

const name = 'name';
<name />
==
React.createElement('name',null,null);

const Name = 'name';
<Name />
==
React.createElement(Name,null,null);

Таким образом в переменную можно ложить не только компонент, но и HTML тэги.
источник

P

Pavel in React: русскоязычное сообщество
Alex G
babel заменяет JSX на React.createElement()
Логика простая:
 если тэг начинайться с большой буквы - то он считает это компонентом и передает в createElement первым аргументом переменную с таким же именем.
 если с маленькой - то первый аргумент строка.

Тоесть:

const name = 'name';
<name />
==
React.createElement('name',null,null);

const Name = 'name';
<Name />
==
React.createElement(Name,null,null);

Таким образом в переменную можно ложить не только компонент, но и HTML тэги.
Получается, так как я написал выше должно работать? или я не пойму где ошибка была.

import ComponentName from './content'
render () {
   const TopPanel = 'ComponentName'
   return (
  <TopPanel />
   )
}
источник

AG

Alex G in React: русскоязычное сообщество
Pavel
Получается, так как я написал выше должно работать? или я не пойму где ошибка была.

import ComponentName from './content'
render () {
   const TopPanel = 'ComponentName'
   return (
  <TopPanel />
   )
}
выведи в консоль TopPanel. Что там?
источник

AG

Alex G in React: русскоязычное сообщество
Pavel
Получается, так как я написал выше должно работать? или я не пойму где ошибка была.

import ComponentName from './content'
render () {
   const TopPanel = 'ComponentName'
   return (
  <TopPanel />
   )
}
Насколько я вижу у тебя там строка 'ComponentName'.
React не допускает создание произвольных HTML тэгов. (возможно это можно изменить, я не знаю).
источник

P

Pavel in React: русскоязычное сообщество
Строка
А потом
Warning: <ComponentName /> is using uppercase HTML. Always use lowercase HTML tags in React.
источник

AG

Alex G in React: русскоязычное сообщество
Pavel
Строка
А потом
Warning: <ComponentName /> is using uppercase HTML. Always use lowercase HTML tags in React.
вот и ответ: недопустимый HTML тэг.
источник

AG

Alex G in React: русскоязычное сообщество
Pavel
Строка
А потом
Warning: <ComponentName /> is using uppercase HTML. Always use lowercase HTML tags in React.
посмотри на оф. сайте реакта список допустимых тэгов.
источник

P

Pavel in React: русскоязычное сообщество
Alex G
Насколько я вижу у тебя там строка 'ComponentName'.
React не допускает создание произвольных HTML тэгов. (возможно это можно изменить, я не знаю).
Похоже, что надо просто компонент (вернее ссылку на него), и не парится 🙃
А если нужна динамика, то вот решение https://medium.com/@Carmichaelize/dynamic-tag-names-in-react-and-jsx-17e366a684e9
источник

NK

ID:559266692 in React: русскоязычное сообщество
Pavel
Похоже, что надо просто компонент (вернее ссылку на него), и не парится 🙃
А если нужна динамика, то вот решение https://medium.com/@Carmichaelize/dynamic-tag-names-in-react-and-jsx-17e366a684e9
Прочитал статейку. Хотя название у нее умное, в сущности это простая вариация на тему Conditional Rendering. Ничего нового.  Все это хорошо описано в https://reactjs.org/docs/conditional-rendering.html. Если бы чувак разместил свои предпочтения (Beer, Music & JavaScript) в другом порядке, может быть вышло бы поинтересней.😊
источник

NK

ID:559266692 in React: русскоязычное сообщество
Юра Чеботаев
Позволь узнать, а какую работу ты для себя хочешь?
Какую работу хочу? Даже не знаю. Ну типа,  кодить и что б платили.
источник

НА

Николай Антамохин in React: русскоязычное сообщество
Добрый день, пытаюсь обмыслить вопрос. Допустим в приложении есть несколько типов учеток. Если пользователь не авторизован, код редьюсеров/экшенов один. Когда авторизован редьюсеры/экшены расширяются. Причем хотелось бы подгрузку кода на горячую. Пока это выглядит у меня все одной большой лапшой, логика экшенов разделяется внутри по стейту профиля, что мне кажется неочень хорошо. Не знаю, может бред пишу.
источник

НА

Николай Антамохин in React: русскоязычное сообщество
То есть меня беспокоит, что клиенту отсылается код для обработки закрытой части в том числе.
источник

AG

Alex G in React: русскоязычное сообщество
Николай Антамохин
То есть меня беспокоит, что клиенту отсылается код для обработки закрытой части в том числе.
Самое простое : на сервере определяй - авторизован или нет. в зависимости от ответа - грузи нужный js-файл.
webpack позволяет делать несколько бандлов, особо не заморачиваясь.
Файл с общим функционалом подключен всегда (большинство фунционала общие, включая React и ReactDOM).
Если пользователь вошел или вышел, через AJAX отправляй запрос, чтобы изменить куки, и перезагружай страницу.
Пользователи не так часто делают вход или выход, чтобы считать это проблемой.
источник

AG

Alex G in React: русскоязычное сообщество
Если всё таки нужно на горячую, то можно использовать вэбпаковский `require.ensure()`
источник

С

Сергей in React: русскоязычное сообщество
привет всем
источник

ПЯ

Павел Якупов in React: русскоязычное сообщество
Сергей
привет всем
привет
источник
2018 March 12

ЮЧ

Юра Чеботаев in React: русскоязычное сообщество
источник

AP

Anatoliy Pushkarev in React: русскоязычное сообщество
Добрый вечер, при импортировании изображения по адресу src/img/image.png командой import image from 'img/image.png' возникает ошибка:
источник

AP

Anatoliy Pushkarev in React: русскоязычное сообщество
Module not found: Can't resolve 'image.png' in '/Users/anatoliy/Documents/weather/src'
источник

J

Jik in React: русскоязычное сообщество
file loader нужен
источник