@react_js

Страница 4383 из 5115
Ivan
12.07.2018
05:51:15
Ребят, всем привет. Возможно кто то сталкивался с таким паттерном: мне нужно пробросить во враппер компонента любые возможные синтетические обработчики реакта. Т.е. В контейнере я определяю функцию onClckCapture, передаю его как непредусмотренный атрибут компоненту. Но так как в дочернем компоненте во враппере он не предусмотрен и не вызывается,он работать не будет. но мне хотелось бы полностью управлять поведением компонента. {...this.props} в div враппер компонента использовать нельзя, так как оттуда может подтянуться всякая дичь. Фильтровать пропсы тоже. Как такое провернуть используя методы из реакт «коробки»?.

Maksym
12.07.2018
06:08:49
Самому інтересно, можно попробивать через контекст или редакс стор

Но точно нескаду мож ребята пробивали

Google
RJ
12.07.2018
06:25:05
Гайз, есть идеи как менять куки экспресса при изменении стейта?

Ivan
12.07.2018
06:26:35
обработчики засунуть в один объект, а в компоненете {...this.props.wrapperHandlers}
Такой способ тоже не подходит. Так как мне нужно такое поведение для всех компонентов, а в таком случае нужно будет этот враппеер хэндлерс передавать в каждый компонент и делать спреад оператор внутри контейнера. Мой руководитель не согласиться. Он сейчас то полностью изолирует поведение компонентов, но из за этого теряешься огромные возможности управления ими.

Ivan
12.07.2018
06:28:56
а какие возможности теряются?
Анимация, проброс дата-атрибутов, возможность получишься реф враппера а не компонента.

И назначить на враппер обработчики клавиатуры, мышки и т.д.

Илья
12.07.2018
06:30:34
Ну так компонент должен позволять навешивать обработчики, не совсем понимаю вашего кейса

Anton
12.07.2018
06:33:19
No 'Access-Control-Allow-Origin' header is present on the requested resource.

как можно решить?

в create-react-app делаю запрос через axios

Ivan
12.07.2018
06:36:30
Ну так компонент должен позволять навешивать обработчики, не совсем понимаю вашего кейса
Он это и так делает. Все что я хочу так это найти альтернативу спреад оператора на враппере компонента, чтобы он навешивал обработчики вида onClick, onMouseDown, onMouseUp и так далее на себя, если они есть в пропсах.

Илья
12.07.2018
06:37:15
тогда только фильтр

Ivan
12.07.2018
06:37:24
Возможно через прокси объект.

Google
Ivan
12.07.2018
06:37:29
Ну вот фильтр тоже не подходит.

Evgeniy
12.07.2018
06:38:03
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Есть вероятность, что сервер не поддерживает cors

Ivan
12.07.2018
06:40:13
Возможно как то в пропс children children навесить конкретный обработчик?

Anton
12.07.2018
06:41:08
Есть вероятность, что сервер не поддерживает cors
Cors, это кросс доменное обращение ?

Evgeniy
12.07.2018
06:41:34
Что-то вроде того

Anton
12.07.2018
06:42:19
Но эта ж тема как то решается?

Nikita
12.07.2018
06:44:08
как можно решить?
Добавить заголовок на сервере

Anton
12.07.2018
06:45:04
Добавить заголовок на сервере
У меня есть ссыль с json, которую нужно распарсить

Нет доступа к серверу

Ivan
12.07.2018
06:46:24
По-моему я нашёл выход. Интересно кому?

Ivan
12.07.2018
06:48:58
Если я не ошибаюсь при деструктуризации объекта возможно использовать рест оператор и вот его во враппер и прокидывать {...restProos}

Только до раб компа дошёл. Сейчас проверю теорию.

Да, все работает. Т.е. при деструктуризации после всех полей обьекта, нужно ставить ...rest (как угодно можно назвать) и уже прокидывать в контйнер <div {...rest} >

Дмитрий
12.07.2018
07:02:41
Так а при прикидывании реста, ты как обезопасишь себя от лишнего в компоненте?

Дмитрий
12.07.2018
07:04:11
Ну там наверное указываешь что тебе нужно, а это мало чем отличается от обычного прокидывания пропсами, не?

Ivan
12.07.2018
07:10:46
Так а при прикидывании реста, ты как обезопасишь себя от лишнего в компоненте?
Что именно? Store? history, match и прочие пропсы? Я делаю компонент а не контейнер, и только контейнер контролирует что именно передавать в компоненты. Это исключает вероятность передачи в рест всякого дерьма.

Ivan
12.07.2018
07:33:32
Google
Valeriy
12.07.2018
07:33:41
ты даже не представляешь себе как сложно потом поддерживать такой код, когда твой коллега так чудит, прокидывая пропсы через 3-5 уровней используя ...rest

Valeriy
12.07.2018
07:36:27
Интересно мнение послушать почему
порой, чтобы разобраться что именно там пробрасывается, приходится как клубок разматывать приложение поднимаясь уровень за уровнем вверх в поисках передаваемой структуры самое печальное когда данные приходят, тут же забиваются в редьюсер, потом коннектятся к контейнеру и далее нигде не расшифровываясь так и идут целой пачкой в виде {...props}

через какие 3-5 уровней?
имеется в виду <Component {...props} /> внутри этого Component рендерится еще <Component2 {...props} /> и т.д.

Ivan
12.07.2018
07:37:36
<Component text="123' onClick={console.log} /> внутри компонента const {text, ...rest} = this.props и в контейнер <div {...rest}> {text} </div>

Valeriy
12.07.2018
07:37:46
и вот когда эта структура не типизирована, очень сложно бывает понять что там должно быть, а чего нет

чтобы посмотрев на код ты сразу мог понять, какие пропсы явно проносятся

исключение - либы, например компонент типа TextInput но в этих случаях обычно речь не идет о многоуровневых вложенностях

arikuza
12.07.2018
07:42:17
лучше делать все очевидно, без рестов
Удваиваю, поддерживать ...rest - то ещё повидло

Max
12.07.2018
07:43:26
поэтому все эти ...rest по миниимуму должны быть

Ivan
12.07.2018
07:43:40
Какие пропсы явно переносяться, за это в нашем проекте отвечает flow. Мне же нужен контроль над самими компонентами, чтобы я мог делать, например cloneElement.only(children, {onClickCapture: this.showNotification}); как обертку над компонентом, без ломания верстки и внутри оборачиваемого ребенка можно было управлять теми же событиями.

Valeriy
12.07.2018
07:44:44
ну я вот в проекте текущем с этими рестами столкнулся плотно... человек, который это "подарил" проекту ушел и теперь все это волшебство так сильно тормозит развитие, что просто не передать

Ivan
12.07.2018
07:44:48
Пока я не увидел минусов. Только если реально ...rest прокидывать как безумная обезьяна во все дочерние компоненты

Valeriy
12.07.2018
07:45:22
Oleg
12.07.2018
07:45:46
Пока я не увидел минусов. Только если реально ...rest прокидывать как безумная обезьяна во все дочерние компоненты
лучше либо явно указывать все пропсы, либо использовать unstated/context provider https://github.com/jamiebuilds/unstated

arikuza
12.07.2018
07:45:50
Valeriy
12.07.2018
07:46:05
но стоит подключить еще людей, которые начнут делать также, ты устанешь вносить изменения в такой код, править баги, разбираясь не только с логикой, но еще и с параметрами передаваемыми

Google
Ivan
12.07.2018
07:50:52
Я, наверно, не корректно довел мысль. Я понимаю о чем вы говорите, но мне нужно управление враппером компонента, а именно event handlers, другие пропсы, контексты и прочие атрибуты передаваться не будут и отслеживать этого не составит труда с возможностями IDE.

Admin
ERROR: S client not available

Ivan
12.07.2018
07:53:11
Хок будет работать для всего компонента, а если делается несколько экземпляров, для некоторых из них нужно сделать preventDefault.

Andrew
12.07.2018
08:13:09
Не знаю что это было ?

Хмммм что ж это могло быть, например пропсы 2 раза приходили

Nikita
12.07.2018
08:15:38
Ребята, где там группа по вебшторму (прости, господи)? Или может кто-то может подсказать, как настроить там Prettier с eslintIntegration?

Nikita
12.07.2018
08:17:17
Grigore
12.07.2018
08:22:30
Добрый день, пытаюсь настроить чтоб сборка реакт работала по туториалу https://medium.com/bucharestjs/upgrading-a-create-react-app-project-to-a-ssr-code-splitting-setup-9da57df2040a запускаю сервер через ноду указывая на файл с содержимым require('ignore-styles'); require('url-loader'); require('file-loader'); require('babel-register')({ ignore: [ /(node_modules)/ ], presets: ['env', 'react-app'], plugins: [ 'syntax-dynamic-import', 'dynamic-import-node', 'react-loadable/babel' ] }); require('./index'); а для оптимизации использую конфиг const webpack = require('webpack'); const path = require('path'); module.exports = { entry: ['./server/index.js'], target: 'node', output: { path: path.resolve(__dirname, 'server'), filename: 'render-server-compiled.js', }, module: { rules: [ { test: /js$/, exclude: /(node_modules)/, loader: 'babel-loader', } ] }, node: { __dirname: true }, plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }) ] } конфиг использует .babelrc { "presets": [ ["env", {"modules": false, "targets": {"node": "current"}}], "react-app" ], "ignore": ["/(node_modules)/"], "plugins": [ "syntax-dynamic-import", "dynamic-import-node", "react-loadable/babel" ] } получаю в итоге ошибку```UnhandledPromiseRejectionWarning: Error: Cannot find module 'function () { return require('../components/About'); }'``` где используется const About = Loadable({ loader: () => import('../components/About'), loading: () => <div>loading...</div> }) но вот если запускать через то, что выдаст вебпак, то проблем нет. Может кто подскажет что тут не так ?

Cenator
12.07.2018
08:22:49
Добрый день, пытаюсь настроить чтоб сборка реакт работала по туториалу https://medium.com/bucharestjs/upgrading-a-create-react-app-project-to-a-ssr-code-splitting-setup-9da57df2040a запускаю сервер через ноду указывая на файл с содержимым require('ignore-styles'); require('url-loader'); require('file-loader'); require('babel-register')({ ignore: [ /(node_modules)/ ], presets: ['env', 'react-app'], plugins: [ 'syntax-dynamic-import', 'dynamic-import-node', 'react-loadable/babel' ] }); require('./index'); а для оптимизации использую конфиг const webpack = require('webpack'); const path = require('path'); module.exports = { entry: ['./server/index.js'], target: 'node', output: { path: path.resolve(__dirname, 'server'), filename: 'render-server-compiled.js', }, module: { rules: [ { test: /js$/, exclude: /(node_modules)/, loader: 'babel-loader', } ] }, node: { __dirname: true }, plugins: [ new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('production') } }) ] } конфиг использует .babelrc { "presets": [ ["env", {"modules": false, "targets": {"node": "current"}}], "react-app" ], "ignore": ["/(node_modules)/"], "plugins": [ "syntax-dynamic-import", "dynamic-import-node", "react-loadable/babel" ] } получаю в итоге ошибку```UnhandledPromiseRejectionWarning: Error: Cannot find module 'function () { return require('../components/About'); }'``` где используется const About = Loadable({ loader: () => import('../components/About'), loading: () => <div>loading...</div> }) но вот если запускать через то, что выдаст вебпак, то проблем нет. Может кто подскажет что тут не так ?
@webpack_ru

Grigore
12.07.2018
08:23:16
@webpack_ru
спасиб

blkmrkt
12.07.2018
08:36:44
Yuriy
12.07.2018
08:41:44
@javascript_jobs

Дмитрий
12.07.2018
08:50:50
ребят, есть какой то способ поставить минимальный размер файла для выноса в чанк в react-loadable?

Дмитрий
12.07.2018
08:58:04
да, но хотелось бы, чтобы это автоматом происходило)

чтобы не следить за каждым чанком

Cenator
12.07.2018
08:58:29
это антипаттерн

Google
Cenator
12.07.2018
08:58:47
ты выделяешь в лоаудабл только те, которые заведомо тяжелые

Дмитрий
12.07.2018
08:59:15
ок, я тебя понял, спасиб

lexxx
12.07.2018
09:29:33
Uncaught Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

из за чего7?

ну в смысле у меня default импорты компонентов, почему появляется эта ошибка?

Dimanius851
12.07.2018
09:29:59
цитата: “joi + React state == best forms ever”

lexxx
12.07.2018
09:31:47
а импортируешь как
я знаю в чем различия, дело в том, что если я делаю именованый экспорт и импортирую именованный в кавычках ошибка все равно остается

Андрей
12.07.2018
09:37:20
ну в смысле у меня default импорты компонентов, почему появляется эта ошибка?
у тебя рядом лежат файлы стилей, загружаемые как css-modules?

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