Таймураз
Не говоря о том, что с лайфсайклом реакта можно немного обосраться, если у тебя императивное состояние на клиенте
Daniil
Ну и насколько помню от реакта там мало, тк не все лайфсайклы там жопа
Daniil
Хоть как - то. Но пару раз в ногу стреляло конечно.
Таймураз
Хоть как - то. Но пару раз в ногу стреляло конечно.
Стреляло в ногу как раз таки потому, что реакт- не шаблонизатор лол
Daniil
ну и хз еще как там щас с хуками будет все. Например тот же конструктор
Таймураз
с хуками все намного проще
Daniil
хм, ну окей, надо будет глянуть
Таймураз
хм, ну окей, надо будет глянуть
Я сейчас могу переписывать текущее приложение как раз таки за счет хуков, так как с хоками отрефакторить то, что было раньше- практически невозможно
Daniil
хз шо там за кейс с хоками был, но вроде проблем в рамках сср не испытывал с ними
Таймураз
Хуки- то же состояние каждого компонента, только в более декларативном виде, что позволяет лучше композировать логику
Таймураз
хз шо там за кейс с хоками был, но вроде проблем в рамках сср не испытывал с ними
Проблема в реализации модели данных, а не в хуках или SSR
Daniil
понял
Таймураз
Это я знаю а как использовать приложение <App/> и всякое такое? Ну интернет магазин хочусделать на MERN
Если вкратце- используй next.js или что-то в этом духе, сам ты хорошо SSR в этом году не реализуешь по ряду причин
Daniil
да и не стоит оно того скорее всего. Экспа с кастом сср конечно заебца, но нет
Daniil
шо там гугелы и яндексы все еще не могут в изоморфные?
アレクサンダー・バキマトフ
гугел уже вроде как могет а яндекс как всегда)
Kostya
так что забить на реакт и какойто PUG использовать? хочется реактивным сделать его чтоб развивать его?
Daniil
Не, когда тестили - не мог, пару месяцев назад точно
Daniil
А может и мог, просто хуево отображался по сравнению с сср и потом с пререндером.
Andrei
всем привет. Такой интересный вопрос. использую функциональные компоненты с хуками и наверх накручен reselect. при использовании useSelector- он вызывает ререндер страницы при любом типе действий( связанных или нет со стором)( проверял линки- каждый раз создается новые селектори возращается новая копия данных) при использовании createSelector из reselect-этот баг был пофикшен, однако теперь, при измении стора( использую immutable js), мой селектор не обновляется и данные остаются не актуальными. вот код сниппет import {createSelector} from "reselect"; const getZoomer = (state)=> state.zoomer; const zoomer = createSelector(getZoomer, state => state);
Andrei
Буду рад любой помощи, либо вариантам как обойти useSelector, который создаёт постоянно новую Линка и ререндерет компоненту
Adv0cat
Буду рад любой помощи, либо вариантам как обойти useSelector, который создаёт постоянно новую Линка и ререндерет компоненту
Ну давай думать, что было бы, если бы у тебя не было реселекта?)) Ты бы я думаю через мапТуПропс передал бы то значение, что тебе нужно, правильно?
Adv0cat
На крайняк, у тебя бы был этот же селектор но в виде чистой функции, которая принимает стейт и выдает нужные данные
Andrei
неа, я использовал useSelector хук внутри функциональной компоненты
Adv0cat
неа, я использовал useSelector хук внутри функциональной компоненты
Ну предположим нет у тебя и юсе селектора))
Andrei
коннект и mapstatetoprops
Adv0cat
Вооот, это решит твою проблему ререндера компоненты
Andrei
все самое новое-хорошо забытое старое?
Adv0cat
Ну дык)))
Adv0cat
Если ты считал что-то в селекторе, то чтобы сделать момоизацию, которую делает реселект, просто добавь новое поле и пересчитыва его сам и сохраняй в нем калькулированные данные 🙂
Мирослав
привет
Мирослав
в CRA что имеет больший приоритет — .env или process environent?
Andrei
бред, нахрена вводить было хуки в 16.7, чтобы люди мучались с вечным перерендером. я использую расчеты внутри редюсера, но это происходит примерно так: newScale = Math.max(Math.min(newScale, maxScale), minScale); if(newScale === state.scale){ return state; } // find the ratio of the new scale const ratio = newScale / oldScale; const realX = zoomCenter.x - state.translateX; const realY = zoomCenter.y - state.translateY; let newTranslateX = -1 * (ratio * realX - zoomCenter.x); let newTranslateY = -1 * (ratio * realY - zoomCenter.y); const coords = checkTranslateRanges(newScale, state.container, {newTranslateX, newTranslateY}); return Map(state) .set('scale',newScale) .set('translateY',coords.newTranslateY) .set('translateX',coords.newTranslateX) .toJS(); ничего здесь не сохраняет свою линку и не должно мне дурить мозг. реселект работает, как я вычитал и посмотреть по принципу shallowEqual, но почему-то его это не устраивает
Sheldhur
еще один рисователь реактом
Andrei
useMemo
если ты про компоненту здесь- не помогает, так как изменение линки селектора внутри данной компоненты- его все равно обновляет, а если мемо использовать на селектор- то это зачем?)
Andrei
еще один рисователь реактом
рисую интерактивую карту для выбора места, использование зумов стандартных- не рабочий вариант, так как там нужна своя логика, с тултипами и легендами
Andrei
😯 сейчас
Paul
привет всем. ребят, подскажите плз, как правильно поступить -- я хочу сделать простенькую landing page для себя, react/material. документацию по реакту я осилил и общую концепцию понял. посмотрел несколько туториалов -- везде разный подход. кто-то просто верстку режет на компоненты, кто-то пользуется готовыми библиотеками компонентов (некоторые уже depreacted). не хочу велосипеды изобретать или вникать в подход, который уже не используется, поэтому вопрос такой -- какой путь стандартный на сегодня?
Andrei
const coords = checkTranslateRanges(newScale, state.container, {newTranslateX, newTranslateY}); console.log('recalculate'); return Map(state) .set('scale',Math.round(newScale)) .set('translateY',Math.round(coords.newTranslateY)) .set('translateX',Math.round(coords.newTranslateX)) .toJS();
Мирослав
Мирослав
как то заигнорить, например
Sheldhur
почитать документацию
Adv0cat
const coords = checkTranslateRanges(newScale, state.container, {newTranslateX, newTranslateY}); console.log('recalculate'); return Map(state) .set('scale',Math.round(newScale)) .set('translateY',Math.round(coords.newTranslateY)) .set('translateX',Math.round(coords.newTranslateX)) .toJS();
Ну хрен его знает)) Единственное что мне помагает в таких случаях начать воспроизводить такой эффект с нуля, ну т.е. создаешь новый компонент, в нем минимальный код, который повторяет твою ситуцию с рекалькуляцией и пробуешь сделать так, чтобы у тебя все нормально заработало)) И анализируешь, где бяда)
Dmitriy
Где глянуть конфиги линтера что в CRA зашиты?
Александр
Где глянуть конфиги линтера что в CRA зашиты?
https://github.com/facebook/create-react-app/blob/master/packages/eslint-config-react-app/index.js
Adv0cat
попробую возвести маленькое приложение на codesandbox.. может найду проблему. отпишусь :)
Замечательное решение!) Обязательно отпишись, мне очень инетерсно чем дело кончится)))
Andrei
Замечательное решение!) Обязательно отпишись, мне очень инетерсно чем дело кончится)))
вот это не работает, а с useSelector работает буду копать https://codesandbox.io/s/reactredux-qylcg
Adv0cat
вот это не работает, а с useSelector работает буду копать https://codesandbox.io/s/reactredux-qylcg
Кажется я понял твою ошибку... По-моему ты воспринимаешь реселект, как что-то, что уже привязанное к редаксу, хотя по сути, реселект это просто обертка над селекторами, т.е. почти такая же чистая функция над чистыми функциями, только с возможностью запомнить данные и не пересчитывать стейт заново. В том примере что ты скинул, ты просто взял функцию и передал её в компонент, как вроде бы ты просто написал <h1>{() => ()}</h1>
Andrei
есть вариант как пофиксить?
Артем
Ребята, а реакт может работать с сокетным соединением?
Andrei
Ребята, а реакт может работать с сокетным соединением?
а почему бы и нет)) это же просто js либа
Adv0cat
вот это не работает, а с useSelector работает буду копать https://codesandbox.io/s/reactredux-qylcg
Дык по сути useSelector и есть привязкой к редаксу, так же как maptoprops, ну т.е. чтобы в эти функции передать state из редакса, нужно что-то сделать, или через useSelector передать или через maptoprops (вот например в самом реселекте https://github.com/reduxjs/reselect#connecting-a-selector-to-the-redux-store)
Артем
Мне просто надо: я отправляю запрос,и потом жду пока мне сервер через N-ое количество времени вернет что-то обратно,с помошью чего можно реализовать?
Артем
может кто что посоветовать для работы с реактом?
Артем
если просто протестировать, можно через setTimeout()
та не) то легко)мне именно для теста с сервером надо)
Anonymous
Привет. Есть что-то типа Mobx-state-tree на хуках?
Артем
axios например и async
а как это поможет? я уже использую axios
Adv0cat
Мне просто надо: я отправляю запрос,и потом жду пока мне сервер через N-ое количество времени вернет что-то обратно,с помошью чего можно реализовать?
Можно сделать просто, а можно заморочится. Просто - это опрашивать сервер гет запросами не сделал ли он ничо там, а щас, а щас, а щас)) Заморочится, это установить WebSocket'ное соединение с сервером и держать с ним коннект, но ты должен понимать, что это всем придется держать коннект, и если у тебя предполагается очень большой поток людей, то тебе помимо прочности сервера еще коннекты к сокету держать нужно 😉
Adv0cat
типо через каждые пару секунд отправлять гет запрос?)
Потому что тебе держать коннекты нужно только, если ты собираешся часто и много инфы слать, а если ради одного запроса держать целый коннект, то там беку придется попотеть)) Да, по сути ты таким образом ddos устраиваешь собственноручно, но все таки есть нюансы во всех подходах))
Andrei
А коннект это что вообще физически? Чтоб понять, почему и насколько бэк с него потеть будет. Может кто подскажет
Ты будешь постоянно делать запросы на сервер и держать с ним открытый канал, чтобы обмениваться с ним Сообщениями. То есть ты создаёшь своеобразным мост, по которому общаетесь.( если не прав, поправьте)