Size: a a a

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

2020 November 24

ДК

Даниил Кондратьев... in React — русскоговорящее сообщество
Мерч
ток осторожнее с хуками редакса
их оптимизация неочевидна
В каком смысле?
источник

A

Alex in React — русскоговорящее сообщество
Кстати. Не подскажете ещё как LocalStorage(LS) тут заюзать. Мозг кипятится.

Задача
    проверить в localStorage переменная inProgress. Если true, то показать вопрос.


Насколько я понимаю, мне нужно делать вот так
   
   let inProgress = localStorage.getItem('question') ? JSON.parse(localStorage.getItem('question')) : []
   
   localStorage.setItem('question', JSON.stringify(inProgress))

   const data = JSON.parse(localStorage.getItem('question'))
источник

М

Мерч in React — русскоговорящее сообщество
Даниил Кондратьев
В каком смысле?
У оберток редакса предусматривается оптимизация
shallowEqual тот же

https://amorgunov.com/posts/2020-04-12-use-redux-with-react-hooks/
источник

М

Мерч in React — русскоговорящее сообщество
а у хуков сам это все должен писать
источник

М

Мерч in React — русскоговорящее сообщество
советую посмотреть в сторону нового мобыкса
он работает как сказка, без лишних абстракций
источник

꧁岡

꧁倫太郎 岡部꧂... in React — русскоговорящее сообщество
Мерч
советую посмотреть в сторону нового мобыкса
он работает как сказка, без лишних абстракций
А ещё лучше эффектор)
источник

S

Stanislav in React — русскоговорящее сообщество
Мерч
советую посмотреть в сторону нового мобыкса
он работает как сказка, без лишних абстракций
человек спрашивал как ему length массива прямо из стейта вытянуть, а вы ему про мобыкс и эффектор)
источник

[

[object Object] in React — русскоговорящее сообщество
Mark
Реализую компонент переключения темы приложения.

Темная тема активна, если в localStorage присутствует ключ dark-theme.

Логику по проверке localStorage я описываю в useEffect, если ключ dark-theme присутвует, то на <html /> я вешаю атрибут data-dark-theme.

Проблема заключается в том, что useEffect происходит после монтирования, и из-за этого тема "мерцает". Изначально она светлая, а когда useEffect сработал, и добавил на html нужный атрибут, то тема переключается на темную.

Если вынести логику проверки за пределы useEffect, то функция срабатывает сразу, и ничего не "мерцает".

Можно ли так поступать?
Проще всего сделать проверку на первую загрузку, тогда должно работать корректно
источник

G

Gohar in React — русскоговорящее сообщество
привет всем, пишу e2e тесты на cypress/vscode/js (новичок) , app на react + firebase, все запросы async. хочу проверить, что user is logged in, и ждать пока элемент явиться на странице, не получается. Пробовала app ready, cy.server().. cy.wait(), cy.visit(page, timeout) , все ровно тест фейлиться (( как решили эту проблему?
источник

@

@xtx in React — русскоговорящее сообщество
Gohar
привет всем, пишу e2e тесты на cypress/vscode/js (новичок) , app на react + firebase, все запросы async. хочу проверить, что user is logged in, и ждать пока элемент явиться на странице, не получается. Пробовала app ready, cy.server().. cy.wait(), cy.visit(page, timeout) , все ровно тест фейлиться (( как решили эту проблему?
разве тесты подразумивают какие-то действия?
тест = мокнутые данные которые передаються в конкретный функционал, для того что бы провалидировать результат работы функционала
такие действия как «залогинится» как по мне неуместны, если у тебя есть некий токен для авторизации, подсунь его в тесте и проверь результат выполнения функции
источник

G

Gohar in React — русскоговорящее сообщество
@xtx
разве тесты подразумивают какие-то действия?
тест = мокнутые данные которые передаються в конкретный функционал, для того что бы провалидировать результат работы функционала
такие действия как «залогинится» как по мне неуместны, если у тебя есть некий токен для авторизации, подсунь его в тесте и проверь результат выполнения функции
спасибо за ответ, а ui тест не потеряет ли смысл?
источник

АБ

Александр Бакиматов... in React — русскоговорящее сообщество
@xtx
разве тесты подразумивают какие-то действия?
тест = мокнутые данные которые передаються в конкретный функционал, для того что бы провалидировать результат работы функционала
такие действия как «залогинится» как по мне неуместны, если у тебя есть некий токен для авторизации, подсунь его в тесте и проверь результат выполнения функции
это ж e2e, там все шо угодно может быть) типичный кейс открыть такой то адресс -> ввести логин -> ввести пароль -> нажать кнопку логина -> проверить соотвествует ли урл тому на который нужно было перейти после логина
источник

ДК

Даниил Кондратьев... in React — русскоговорящее сообщество
Понял, почитаю)
источник

S

Stanislav in React — русскоговорящее сообщество
Александр Бакиматов
это ж e2e, там все шо угодно может быть) типичный кейс открыть такой то адресс -> ввести логин -> ввести пароль -> нажать кнопку логина -> проверить соотвествует ли урл тому на который нужно было перейти после логина
++, грустно читать что авторизация в e2e неуместна(
источник

@

@xtx in React — русскоговорящее сообщество
Александр Бакиматов
это ж e2e, там все шо угодно может быть) типичный кейс открыть такой то адресс -> ввести логин -> ввести пароль -> нажать кнопку логина -> проверить соотвествует ли урл тому на который нужно было перейти после логина
Тогда сорян, я такое не шарю
Подумал на юниттесты
источник

АБ

Александр Бакиматов... in React — русскоговорящее сообщество
Gohar
привет всем, пишу e2e тесты на cypress/vscode/js (новичок) , app на react + firebase, все запросы async. хочу проверить, что user is logged in, и ждать пока элемент явиться на странице, не получается. Пробовала app ready, cy.server().. cy.wait(), cy.visit(page, timeout) , все ровно тест фейлиться (( как решили эту проблему?
конкретно по вопросу - сталкивался с таким, это проблема firebase насколько я тогда смог уловить (долго не разбирался). что то типа что fb шлет несколько запросов, причем целевой он шлет вторым, а cypress триггерится на первый. в итоге по факту ничего еще не прогрузилось и результата нет, но проверка уже выполняет и в итоге фейл. я тогда кажется тест кейс по другому описал чтобы не ждать появления элементов. но мне тогда в лом было заморачиваться чтоб разобраться
источник

G

Gohar in React — русскоговорящее сообщество
Александр Бакиматов
конкретно по вопросу - сталкивался с таким, это проблема firebase насколько я тогда смог уловить (долго не разбирался). что то типа что fb шлет несколько запросов, причем целевой он шлет вторым, а cypress триггерится на первый. в итоге по факту ничего еще не прогрузилось и результата нет, но проверка уже выполняет и в итоге фейл. я тогда кажется тест кейс по другому описал чтобы не ждать появления элементов. но мне тогда в лом было заморачиваться чтоб разобраться
спасибо, по документации иду, все ясно, но в реале не работает.
источник

i

isNaN() in React — русскоговорящее сообщество
[object Object]
Переслано от [object Object]
Всем привет, переустановил Линукс и столкнулся с проблемой: не работает Hot Reload.
Причем в CLI показывает изменения и компилирует код, а браузер не перезагружается(
Может, кто-то сталкивался?

P.S Количество Ватчеров уже поднял
гля может у тебя вебпак пятый
я намучлся с ним
проще отктиться до последней 4.11
источник

M

Mark in React — русскоговорящее сообщество
Мои компоненты разбиты по папкам:
/components
--/search
----/index.js
----/search.jsx
----/search.scss
--/button
----/index.js
----/button.jsx
----/button.scss
--/input
----/index.js
----/input.jsx
----/input.scss
Каждый компонент содержит свои стили.

Так же у меня есть папка scss, которая содержит общие утилиты:

/components
...
/scss
--/utils
----/_functions.scss
----/_variables.scss

В главной папке scss, я создал файл, который содержит стили, которые я хочу использовать в других местах, через @extend;

%style {
 color: red;
}

Я импортирую этот файл, в каждый из компонентов

// ../search.scss
.search {
 @extend %style;
}

// ../button.scss
.search {
 @extend %style;
}

// ../input.scss
.input {
 @extend %style;
}

В результате, я ожидаю что директива @extend при компиляции объединит эти классы и задаст им единый стиль:

.search,
.button,
.input {
 color: red;
}

Но этого не происходит, и все стили компилируются отдельно:

.search {
 color: red;
}

button {
 color: red;
}

.input {
 color: red;
}

Почему так происходит?
источник

RD

Roman DobbiKov in React — русскоговорящее сообщество
Полагаю, что extend, это все равно что include в c/c++. Оно не компилирует его в единый объект, а вставляет то, что ты импортируешь.
источник