Size: a a a

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

2021 March 13

M

Myroslav 🍎 in React: русскоязычное сообщество
Aleksandr
fill={isUrgent ? red : blue}
спасибо 👍
источник

KP

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

KP

Kraft Punk in React: русскоязычное сообщество
у меня такой вопрос: хочу по клику на кнопку развернуть во весь экран карту. Делаю массив классов, который потом соединяю методом join(' '). при клике на кнопку в массив залетает новый класс, который отвечает за разворачивание во весь экран. стейт обновляется, класс залетает, но почему-то не меняется на сайте, может кто помочь с этим?
ну и класснейм не меняется естественно
источник

A

Aleksandr in React: русскоязычное сообщество
Kraft Punk
у меня такой вопрос: хочу по клику на кнопку развернуть во весь экран карту. Делаю массив классов, который потом соединяю методом join(' '). при клике на кнопку в массив залетает новый класс, который отвечает за разворачивание во весь экран. стейт обновляется, класс залетает, но почему-то не меняется на сайте, может кто помочь с этим?
ну и класснейм не меняется естественно
мутируешь массив
источник

KP

Kraft Punk in React: русскоязычное сообщество
то есть?
источник

A

Aleksandr in React: русскоязычное сообщество
Kraft Punk
то есть?
источник

KP

Kraft Punk in React: русскоязычное сообщество
ну ок, но это всё равно не решит мою проблему
источник

A

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

A

Aleksandr in React: русскоязычное сообщество
у тебя собственно и проблема в этом заключается, ты вместо новго массива мутируешь старый
источник
2021 March 14

И

Игорь in React: русскоязычное сообщество
Kraft Punk
ну ок, но это всё равно не решит мою проблему
в таких случаях могу порекомендовать юзать библиотеку classNames. все лучше чем через джоины писать и мутировать состояние
источник

D

Daniyar in React: русскоязычное сообщество
parentNode.prepend(el)

Оч крутая штука. Если этот элемент уже есть на странице, то он просто перемещает его в начало.

Можно как то реализовать это на реакте?

у меня слайдер по кнопке перемещает див со слайдами на 200 px вправо/влево.

На  апи с домом используешь просто prepend и готово.
источник

ИС

Иван Старкин... in React: русскоязычное сообщество
Daniyar
parentNode.prepend(el)

Оч крутая штука. Если этот элемент уже есть на странице, то он просто перемещает его в начало.

Можно как то реализовать это на реакте?

у меня слайдер по кнопке перемещает див со слайдами на 200 px вправо/влево.

На  апи с домом используешь просто prepend и готово.
Через ref parentRef.prepend(childrenRef) - хотя я не уверен, что это сработает ибо реакт не очень любит такие вещи)
источник

D

Daniyar in React: русскоязычное сообщество
Иван Старкин
Через ref parentRef.prepend(childrenRef) - хотя я не уверен, что это сработает ибо реакт не очень любит такие вещи)
да изменение дом мимо него он терпит(
источник

ИС

Иван Старкин... in React: русскоязычное сообщество
Загугли, append, как это реализуют на реакте
источник

SP

Stanislav Popov in React: русскоязычное сообщество
если мутация неизбежна мутируй первым!
источник
2021 March 15

D

Daniyar in React: русскоязычное сообщество
в обработчиках меняю классы.

const animationClass = {
 'slider__item--show-to-left': false,
 'slider__item--show-to-right': false,
};

const handleShowNextSlide = () => {
 const nextIdx = ((currentIdx + 1) % chunkedCitiesWheaterList.length);
 animationClass['slider__item--show-to-left'] = true;
 animationClass['slider__item--show-to-left'] = false;
 // console.log('animationClass', animationClass);
 setCurrentIdx(nextIdx);
};

const handleShowPrevSlide = () => {
 const prevIdx = (
   (currentIdx + (slideElementsCount - 1)) % chunkedCitiesWheaterList.length
 );
 animationClass['slider__item--show-to-left'] = false;
 animationClass['slider__item--show-to-left'] = true;
 // console.log('animationClass', animationClass);
 setCurrentIdx(prevIdx);
};

потом при рендеринге их применяю:

const classes = cn({
 ...animationClass,
 slider__item: true,
 'slider__item--active': currentIdx === index,
});

console.log('classes', classes);

return (
 <li key={uniqueId()} className={classes}>
   {chunkedElement.map(renderCitiesWeatherItems)}
 </li>
);

Но вот сюда они всегда приходят в значении  false, не успевают обновиться я так понимаю.
Потому что, если выводить в консоль в обработчиках, то все норм.
Если вывести в консоль animationClass  во втором блоке, то там false

Как
то победить эту проблему можно?
источник

AN

Alex Noname in React: русскоязычное сообщество
Daniyar
в обработчиках меняю классы.

const animationClass = {
 'slider__item--show-to-left': false,
 'slider__item--show-to-right': false,
};

const handleShowNextSlide = () => {
 const nextIdx = ((currentIdx + 1) % chunkedCitiesWheaterList.length);
 animationClass['slider__item--show-to-left'] = true;
 animationClass['slider__item--show-to-left'] = false;
 // console.log('animationClass', animationClass);
 setCurrentIdx(nextIdx);
};

const handleShowPrevSlide = () => {
 const prevIdx = (
   (currentIdx + (slideElementsCount - 1)) % chunkedCitiesWheaterList.length
 );
 animationClass['slider__item--show-to-left'] = false;
 animationClass['slider__item--show-to-left'] = true;
 // console.log('animationClass', animationClass);
 setCurrentIdx(prevIdx);
};

потом при рендеринге их применяю:

const classes = cn({
 ...animationClass,
 slider__item: true,
 'slider__item--active': currentIdx === index,
});

console.log('classes', classes);

return (
 <li key={uniqueId()} className={classes}>
   {chunkedElement.map(renderCitiesWeatherItems)}
 </li>
);

Но вот сюда они всегда приходят в значении  false, не успевают обновиться я так понимаю.
Потому что, если выводить в консоль в обработчиках, то все норм.
Если вывести в консоль animationClass  во втором блоке, то там false

Как
то победить эту проблему можно?
Правильно — создать состояние для компонента, и взависимости от его состояние менять применяемые классы. В обработчиках менять классы немного странно. Либо я не правильно понял код
источник

D

Daniyar in React: русскоязычное сообщество
Alex Noname
Правильно — создать состояние для компонента, и взависимости от его состояние менять применяемые классы. В обработчиках менять классы немного странно. Либо я не правильно понял код
если нажата кнопка назад - одна анимация, если вперед - другая.
источник

PK

Pasha Kozyr in React: русскоязычное сообщество
А где бы вы посоветовали задеплоить свое первое простое реакт приложение новичку? Раньше ничего не деплоил никогда. Мне бы чтобы не сильно по настройкам сложно было ну и бесплатно.
источник

ЮЧ

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