Андрей
React.cloneElement не подходит
artalar
React.cloneElement не подходит
Вы просто не разобрались в нем
artalar
Зачем вы это делаете?
Андрей
Зачем вы это делаете?
<MySlider> <>1<> <>2<> <>3<> </MySlider> Такая структура слайдера. Я в самом компоненте слайдера хочу перебрать детей тоесть слайды и автоматом проставить классы всем. А если у дете есть стили, а они есть что бы их не перетерало а добавлялись
artalar
.MySlider > * { /* styles for child */ }
artalar
?
🦜
Что это?)
css селектор
artalar
🙁
🦜
лол
Андрей
Я просто хочу добавить класс детям, никак получается ?)
🦜
Я просто хочу добавить класс детям, никак получается ?)
ну рофл, у тебя всем вложенным детям применятся стили
🦜
> указывает на вложенность
artalar
Я просто хочу добавить класс детям, никак получается ?)
У вас постановка задачи неправильная, подумайте еще раз или опишите подробнее зачем это вам
artalar
А лучше, сначала, пройдите хотя бы бесплатные курсы html academy
artalar
Потому что на одном React далеко не уедешь
Looch
Или можно еще каждый child оборачивать
Андрей
😊 да HTML по новой учить) Мне это для того нужно что бы каждому child проставлять width вычесленную в JS и класс повесить для стилизации автоматически сразу всем
artalar
Что это?)
https://codesandbox.io/s/zen-forest-0h5zx
Андрей
👍
👌
Volodymyr
Ребята всем привет, подскажите кто работал с Jest. Есть тест который изначально делает: const wrapper = mount(<SidebarPanel id="SidebarPanel" items={items} loading={false} />); expect(wrapper.instance().state.loadingState).toEqual(false); Дальше я хочу вызвать метод который делает setState() wrapper.instance().setLoading(true); expect(wrapper.instance().state.loadingState).toEqual(true); Но у меня мeтод СетЛоадинг --- undefined как исправить такую дичь ? Варианты не писать такую дичь не рассматриваю
A
Нет, зачем там НОС ?
ну я же не могу знать, чем он оформлен. в enzyme есть методы setState и state - используйте их
Volodymyr
Получить у врапера
A
Эм....а я их и использую, мне метод нужен.
где вы их используете? можете залить код на codesandbox ?
Volodymyr
где вы их используете? можете залить код на codesandbox ?
А пример кода в 4 строки нечитаемый?)))
Volodymyr
Спасибо за помощь.)))
A
А пример кода в 4 строки нечитаемый?)))
wrapper.instance().state.loadingState - не вижу тут метода state()
A
тут инстанс неуместен
A
вызов метода напрямую надо в очень редких случаях
A
я предпочитаю писать тесты - имитируя работу пользователя, а не напрямую дергать каждый метод
Volodymyr
я предпочитаю писать тесты - имитируя работу пользователя, а не напрямую дергать каждый метод
Это предпочтения, у меня был вопрос в помощи как дернуть метод напрямую.
A
да и setState - асинхронный.
Andrey
Это предпочтения, у меня был вопрос в помощи как дернуть метод напрямую.
присвой его в глобальный скоуп, и дергай (какой вопрос, такой ответ, повторять такое дома не рекомендуется)
Volodymyr
присвой его в глобальный скоуп, и дергай (какой вопрос, такой ответ, повторять такое дома не рекомендуется)
У врапера есть возможность вызвать метод напрямую. Вариант с window дичь, простите конечно.
Andrey
У врапера есть возможность вызвать метод напрямую. Вариант с window дичь, простите конечно.
так дичь дичью вышибают же кмк, такой тест не тестирует толком ничего полезного
Volodymyr
так дичь дичью вышибают же кмк, такой тест не тестирует толком ничего полезного
Такой тест в продакшене в ленами, его надо поддерживать.
Volodymyr
В легаси
Andrey
Такой тест в продакшене в ленами, его надо поддерживать.
почему не переписать на что-то вменяемое?)
A
Такой тест в продакшене в ленами, его надо поддерживать.
Перепешите, сделайте красиво, максимально качесвенную структуру кода.
Volodymyr
почему не переписать на что-то вменяемое?)
Нельзя. По контракту я могу подфиксить, для того что бы переписать надо с 10 апрувов
Andrey
Нельзя. По контракту я могу подфиксить, для того что бы переписать надо с 10 апрувов
не в курсе, чем по контракту фикс от переписывания в данном контексте отличается, но ладно)
Volodymyr
не в курсе, чем по контракту фикс от переписывания в данном контексте отличается, но ладно)
Тем что переписывать код или рефакторить легаси не умеем право
Китикет
Даже тест нельзя порефакторить?
Eugene
как я могу подписаться на изменение позиции элемента относительно экрана?
Eugene
например, если я скролю, мне нужно отслеживать изменение координат элемента
Китикет
И мне интересно, что тестит тест, который ставит isLoading в true, не лишний ли он?
Volodymyr
Даже тест нельзя порефакторить?
Переписать на нормально нельзя....
Andrey
типа, подправить, но так, чтобы легаси осталось легаси
Andrey
например, если я скролю, мне нужно отслеживать изменение координат элемента
подпишись на скролл (document.addEventListener, либо на свой элемент, если внутри него скролл проходит), и доставай чз реф тот же координаты, хз
Volodymyr
типа, подправить, но так, чтобы легаси осталось легаси
припез... я понимаю. но что бы зааправили перепись надо пройти 10 человек и у них получить апрув, это долже времени займет.
Китикет
Можно порефакторить и разбавить какой-нибудь большей дичью, в итоге легаси будет такой же, если не еще сочнее!
Andrey
Можно порефакторить и разбавить какой-нибудь большей дичью, в итоге легаси будет такой же, если не еще сочнее!
да, просто посреди теста вставить обфусцированный код, который ничего не делает а сам тест чтобы адекватный был профит!
Китикет
Еще же есть такая штука, которая массивами и плюсами пишет код
Китикет
Можно весь тест перевести в нее
Китикет
И строк кода столько будет, можно будет хвастаться своей продуктивностью
Китикет
Представил кстати такой круглый стол, где сидят 10 человек и решают вопрос переписывания легаси)
Eugene
подпишись на скролл (document.addEventListener, либо на свой элемент, если внутри него скролл проходит), и доставай чз реф тот же координаты, хз
useEffect(() => { window.addEventListener("scroll", () => { console.log("here") }) }, []) я вот так подписался, но никакой реакции в какой-то определенный компонент надо это запихнуть?
Andrey
код рабочий
Andrey
(только отписку добавить надо, а то на каждый маунт стакаться будут листнеры)
Eugene
код рабочий
у меня нет)
Eugene
туда, где у тебя будет трекаться положение
что ты имеешь в виду: трекаться?