Size: a a a

React — русскоговорящее сообщество

2020 October 21

АБ

Александр Бакиматов... in React — русскоговорящее сообщество
здесь реакт, не react-native
источник

KB

Korg Bro in React — русскоговорящее сообщество
Александр Бакиматов
еще раз повторить что ты не в том чате?
сорри
источник

A

Alexandr in React — русскоговорящее сообщество
Всем привет!
У менять есть компонент <Input /> которые генерируются кнопкой и выводятся также в случае, если приходит массив строк, на каждый элемент массива.
Задача по кнопке получить все value текущих инпутов.
Сейчас пытаюсь это сделать через:

const handleChange = name => event => {
   event.persist();
   setExample(st => ({...st, [name]: event.target.value}));
};
Но как-то криво работает) Мб кто подскажет рабочий обработчик для таких случаев :)
Заранее спасибо!
источник

A

Alex in React — русскоговорящее сообщество
всем привет, подскажите пожалуйста
есть страница (контейнер), на ней выводятся компоненты: форма поиска и элементы (объекты). работает на редаксе, но, думаю, это не важно в этом случае
в контейнере есть обработчик для формы, состояние для инпутов и через connect() передаю элементы в компонент для элементов
----
вопрос: почему при изменении инпутов перерендеривается не только компонент формы, но и компонент с объектами? И правильная ли практика передавать пропсами в тупые компоненты от страницы (контейнера) вниз? На скрине сам контейнер в котором находятся состояние и все обработчики
источник

A

Alex in React — русскоговорящее сообщество
Доброе утро, объясните плиз,
1) почему удаляется el при повторном нажатии
2) почему удаляется div в соседнем элементе
const Portal = ({ children }) => {
 const modalRoot = document.getElementById("modal-root");
 const el = document.createElement("div");
 useEffect(() => {
   modalRoot.appendChild(el);
 }, []);
 useEffect(() => {
   return () => modalRoot.removeChild(el);
 });
 return createPortal(children, el);
};

<body>
   <div id="root"></div>
   <div id="modal-root"></div>
 </body>
Соответственно, при клике, обновляется стэйт
источник

YZ

Yury Zhuk in React — русскоговорящее сообщество
Alex
Доброе утро, объясните плиз,
1) почему удаляется el при повторном нажатии
2) почему удаляется div в соседнем элементе
const Portal = ({ children }) => {
 const modalRoot = document.getElementById("modal-root");
 const el = document.createElement("div");
 useEffect(() => {
   modalRoot.appendChild(el);
 }, []);
 useEffect(() => {
   return () => modalRoot.removeChild(el);
 });
 return createPortal(children, el);
};

<body>
   <div id="root"></div>
   <div id="modal-root"></div>
 </body>
Соответственно, при клике, обновляется стэйт
не вникая в код, что у вас там происходит, но useEffect без массива зависимостей будет вызываться на каждый рендер
источник

RB

Ramil Bogdanov in React — русскоговорящее сообщество
Всем привет! Подскажите плиз, как можно отобразиь элементы находищиеся в DOM, но не относящиеся к компоненту, который рендерим?
источник

YZ

Yury Zhuk in React — русскоговорящее сообщество
Ramil Bogdanov
Всем привет! Подскажите плиз, как можно отобразиь элементы находищиеся в DOM, но не относящиеся к компоненту, который рендерим?
использовать стейт менеджер либо общего родителя, в котором вызывать функцию для необходимых изменений (либо контекст)
источник

EM

Evgeniy Mokeev in React — русскоговорящее сообщество
Alex
всем привет, подскажите пожалуйста
есть страница (контейнер), на ней выводятся компоненты: форма поиска и элементы (объекты). работает на редаксе, но, думаю, это не важно в этом случае
в контейнере есть обработчик для формы, состояние для инпутов и через connect() передаю элементы в компонент для элементов
----
вопрос: почему при изменении инпутов перерендеривается не только компонент формы, но и компонент с объектами? И правильная ли практика передавать пропсами в тупые компоненты от страницы (контейнера) вниз? На скрине сам контейнер в котором находятся состояние и все обработчики
Потому что меняются props/state этого компонента или родитель
Нужно больше кода, так ничего не понятно
источник

RB

Ramil Bogdanov in React — русскоговорящее сообщество
Yury Zhuk
использовать стейт менеджер либо общего родителя, в котором вызывать функцию для необходимых изменений (либо контекст)
понял, спасибоЙ
источник

A

Alex in React — русскоговорящее сообщество
Yury Zhuk
не вникая в код, что у вас там происходит, но useEffect без массива зависимостей будет вызываться на каждый рендер
то есть по идее, стэйт обновился, он делает modalRoot.removeChild(el), но не делает modalRoot.appendChild(el), так как это только при маунте?
источник

YZ

Yury Zhuk in React — русскоговорящее сообщество
Alex
то есть по идее, стэйт обновился, он делает modalRoot.removeChild(el), но не делает modalRoot.appendChild(el), так как это только при маунте?
https://overreacted.io/a-complete-guide-to-useeffect/
почитай, должно стать по местам у тебя в голове как это работает
источник

A

Alex in React — русскоговорящее сообщество
теперь это ясно, но почему тогда удаляется див в root?
источник

BE

Black Eyes in React — русскоговорящее сообщество
Roman Usherenko
это должен быть один экшн, который разбирается, что куда, и рассылает другие экшны
А где лучше разруливать коннекты websocket ? я делаю это в миддлваре,
Хочу попробовать через родительский компонент,
источник

A

Alex in React — русскоговорящее сообщество
Evgeniy Mokeev
Потому что меняются props/state этого компонента или родитель
Нужно больше кода, так ничего не понятно
примерно так на рабочем примере выглядит, только array приходит из редакса https://codesandbox.io/s/determined-darkness-ljf2n?file=/src/App.js
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Black Eyes
А где лучше разруливать коннекты websocket ? я делаю это в миддлваре,
Хочу попробовать через родительский компонент,
именно вешать лисенеры? я бы вообще вне реакта это делал. в месте инициализации приложения, там где store создаёшь
источник

BE

Black Eyes in React — русскоговорящее сообщество
Roman Usherenko
именно вешать лисенеры? я бы вообще вне реакта это делал. в месте инициализации приложения, там где store создаёшь
да создавать соединение или обрубать
Мне нужно создавать WS после авторизации, не могу не в реакте
источник

A

Alex in React — русскоговорящее сообщество
Evgeniy Mokeev
Потому что меняются props/state этого компонента или родитель
Нужно больше кода, так ничего не понятно
это видно после включения в devtools Highlight updates when components render. Или это вообще норма, что так ререндерятся? можно ли это оптимизировать?
источник

A

Alexandr in React — русскоговорящее сообщество
Всем привет!
У менять есть компонент <Input /> которые генерируются кнопкой и выводятся также в случае, если приходит массив строк, на каждый элемент массива.
Задача по кнопке получить все value текущих инпутов.
Сейчас пытаюсь это сделать через:

const handleChange = name => event => {
   event.persist();
   setExample(st => ({...st, [name]: event.target.value}));
};
Но как-то криво работает) Мб кто подскажет рабочий обработчик для таких случаев :)
Заранее спасибо!
источник

A

Archakov 🌚 in React — русскоговорящее сообщество
Alexandr
Всем привет!
У менять есть компонент <Input /> которые генерируются кнопкой и выводятся также в случае, если приходит массив строк, на каждый элемент массива.
Задача по кнопке получить все value текущих инпутов.
Сейчас пытаюсь это сделать через:

const handleChange = name => event => {
   event.persist();
   setExample(st => ({...st, [name]: event.target.value}));
};
Но как-то криво работает) Мб кто подскажет рабочий обработчик для таких случаев :)
Заранее спасибо!
юзай formik, final-form или react hook form, там меньше костылить будешь
источник