Alexey
Как сделать без косяка?
дать возможность передавать сложные сущности по значению средствами самого движка
Alexey
Опиши синтаксис.
const object2 = &object1;
Andrey
еее, похапеее
Александр
const object2 = &object1;
Второго C++ ещё не хватало
Андрей
const object2 = &object1;
Это не передача по значению. Сигнатуру функции опиши.
Alexey
какой фукнкции?
Александр
Это не передача по значению. Сигнатуру функции опиши.
foo(&bar) видимо по аналогии , только там у амперсанда противоположная семантика
Alexey
Это не косяк.
ну это как у яблоководов: всё, чего у них нет - не нужно и вообще. а как добавят то самое - вы чё, фича.
Dmitry
Он делает новый объект потому, что ты его просишь в этом смысл же иммутабельности поидее, даже если значения одинаковые) Хотя могу ошибаться)
Не всегда У примеру ты постоянно меняешь на одно и тоже значение. Будет лишний ререндер. А если не возвращать новый объект то все ок
Alexey
foo(&bar) видимо по аналогии , только там у амперсанда противоположная семантика
где "там" ? я сделал предположение о том, что (мне) было бы круто, если бы в js добавили возможность передавать _по значению_ объекты и наспех выдумал синтаксис.
Andrey
Да. Но мне нужно именно баннерам из promotions добавить инфу об акции. А так, он просто забирает баннеры и всё
так потому что нормалайзер нужен для нормализации после нормализации можно пройтись редьюсом по акциям, и вложить в баннеры что нужно
Алексей
Ребзя, привет. А как DnD делается? Я что-то туплю. У меня есть инпут, на него надо что-то повешать?
Алексей
ну это как у яблоководов: всё, чего у них нет - не нужно и вообще. а как добавят то самое - вы чё, фича.
Ну во первых, передачи по значению в нормальных динамических языках нет. Во вторых, глубокое копирование, да и копирование вообще редко необходимо.
Alexey
Это не понятно как на уровне движка реализовывать.
так же, как и на уровне языка deep copy, только внутри.
Александр
где "там" ? я сделал предположение о том, что (мне) было бы круто, если бы в js добавили возможность передавать _по значению_ объекты и наспех выдумал синтаксис.
Ну очевидно синтаксис из c++, только там наоборот, все по умолчанию по значению передаётся, а синтаксис с амперсандом позволяет по ссылке передать объект
Андрей
так же, как и на уровне языка deep copy, только внутри.
Лол. А что делать со значениями из замыканий? Функциями?
Andrey
к (не)счастью не пользуюсь _нормальными динамическими языками_ :(
там для форматирования надо 2 символа __italic__ **bold**
Алексей
DnD для загрузки файла
Andrey
в курсе, просто выделяю :)
ну прост выглядит убого, ну лан
Alexey
Лол. А что делать со значениями из замыканий? Функциями?
например не передавать в замыкания по значению, а как и раньше, по ссылке
Adv0cat
Не всегда У примеру ты постоянно меняешь на одно и тоже значение. Будет лишний ререндер. А если не возвращать новый объект то все ок
Как работает ререндер я в курсе, но с чего вдруг, если ты сделал что-то типо return state.set('x', newX); библиотека должна вернуть старый объект, если ты вернул по сути новый, и вот тут как раз таки иммутабельность и работает, вдруг ты просто хотел новый объект с тами же параметрами отдать, считай клон сделать? ПОнимаешь к чему я веду? Если бы ты вызвал return (newX !== state.x) ? state.set('x', newX) : state то ты бы сам озаботился тем, что тебе не нужен новый стейт
Алексей
например не передавать в замыкания по значению, а как и раньше, по ссылке
тогда уж будь последователен и делай лямбды как в крестах
Alexey
Andrey
откуда неконсистентность?
потому что в одних случаях будет полная копия объекта в памяти, а в другом что то скопируется, что то по ссылке передастся
Андрей
откуда неконсистентность?
Почему мы только часть памяти копируем? Вот дебажить прекрасно, когда у тебя может быть абсолютно любое поведение.
Adv0cat
мне кажется ты не понял о чем я я потыкаю иммутабл и попробую сделать пример
Ну ты хочешь сказать, что иммутейбл должен следить за переменными и возвращать новый объект только, если изменились данные внутри? может я потерял суть дискуссии)
Alexey
Почему мы только часть памяти копируем? Вот дебажить прекрасно, когда у тебя может быть абсолютно любое поведение.
не передавать в замыкания по значению я имел в виду не движку, а тебе, как программисту
Alexey
но чую будут вопросы как и по крестам "а что если".. а если не осилил кресты и правда нужно какие-нибудь пайтоны учить пойду работать :)
Алексей
вот жс в кресты превращать точно не надо
Андрей
не передавать в замыкания по значению я имел в виду не движку, а тебе, как программисту
Стоп. Т.е. вместо стройной модели, где у тебя все однозначно, ты предлагаешь вот этот хаос, в котором кучу мелочей надо учитывать?
Andrei
парни( и девушки, скорее всего) задам банальный вопрос. есть пример(!) https://codesandbox.io/s/reactredux-qylcg в котором дети обновляются при изменении стейта. Загвостка вот в чем: измененные данные использует родитель, дети не используют эти данные, однако они обновляются. При проведении по дивам- можно это увидеть в консоли. При подключении компоненты через connect- все в норме ВОПРОС БАНАЛЬНЫЙ: как замемоизировать селектор при функциональных компонентах?!
Bogdan
привет всем, есть проблема, использую формик, появилась нужда сделать начальный стейт для конкретной записи, и вот такая логика, есть селект, но селект получает данные, после своего рендера, форма является его родителем, у формы стейт уже есть, а у селекта данных нету, после подгрузки данных в селект он уже не берет начальный стейт, а пустой, как можно решить проблему?
Bogdan
пробрасывать наверх к родителю флаг как то нехочется
Sergey
Хм... Идея. Спасибо
Вроде получилось реализовать задуманное (возможно это антипатерн, но делает нужный результат) const banner = new schema.Entity("banners"); const promotion = new schema.Entity("promotions", { banners: [ new schema.Entity("banners", {}, { processStrategy: (value, parent, key) => { return { ...value, promotion: parent.id }; } }) ] }); просто обявляю "особые" сущности которые хранятся со всеми banners
Bogdan
initialValues
эта строка поможет если изменился стейт, но дело не в стейте, а в том, что селект получил данные позже
Bogdan
initialValues ?
да, он есть с ним все норм, рендерится форма, в ней селекты, изначально селект пустой и не ловит value, когда данные пришли, он уже не смотрит на initialValues, а просто пустой
Bogdan
нужно ждать загруки селектов как-то, пробросив в них какой то метод, но это прям дикий бред
Anonymous
хз там вроде ели селектов нет он число фигачит а потом при появлении селектов заменет на нужное значение, на крайняк сделай отложеный рендер, я подробно не скажу потому что пару вещей когда то давно правил и все
Anonymous
так у тебя в чем проблема не выбирается нужное значение потому что их сразу нет и в селекте они появляются позже?
Anonymous
а функционально не можешь выставить на успешное завршение запроса? тем более что получаешь ты их в нем же
Den
Подскажите, как это фиксить? (То о чем написано в сообщении - пробовал, ошибка осталась)
Anonymous
setFieldValue и все дела?
S
парни помогите пожалуйста как в payload передать весь массив с измененной частью и как нибудь еще упростить этот код? const { levelPoints } = getState() const currentPoints = levelPoints[0].items[0].points; const _currentPoints = currentPoints.map(item => ( { ...item, isFound: true } )) const payload = [ ...levelPoints, хз что дальше ]
Andrei
вот так можно вставлять в нужный тебе индекс
Bogdan
а функционально не можешь выставить на успешное завршение запроса? тем более что получаешь ты их в нем же
я никак не могу повлиять, потому что запрос в селекте пойдет после его рендера
Andrei
я никак не могу повлиять, потому что запрос в селекте пойдет после его рендера
используй глобальный стейт, либо передавай как пропсы- в том и ином случае оно перерисует
Bogdan
используй глобальный стейт, либо передавай как пропсы- в том и ином случае оно перерисует
кого передавать как пропсы? уже налепили селекты, так, что данные в них, если бы запрос делал у родителя, тогда все норм было
Andrei
кого передавать как пропсы? уже налепили селекты, так, что данные в них, если бы запрос делал у родителя, тогда все норм было
а откуда родитель берет данные? если ребенок меняет стейт( например редакс) то родитель в любом случае подхватит твои ченжи
Bogdan
а откуда родитель берет данные? если ребенок меняет стейт( например редакс) то родитель в любом случае подхватит твои ченжи
есть форма, у нее селекты, рендерится форма со стейтом, а селекты стейт не ловят, они пустые, потом селекты получают данные, но в этот момент они не возбмут уже начальный стейт
Andrei
есть форма, у нее селекты, рендерится форма со стейтом, а селекты стейт не ловят, они пустые, потом селекты получают данные, но в этот момент они не возбмут уже начальный стейт
очень банальный вопрос, который у меня возникает. у тебя начальный стейт, который просто имеет шаблон твоего стейта(пустой то есть). с помощью фетча/сервиса/загрузки с файла ты получаешь новые данные, которыми ты обновляешь весь стейт, верно? но потом тебе надо получить твой первоначальный стейт, после каких-либо действий, я тебя правильно понимаю?
S
[...state.activeSeats.slice(0, seatIndex), value, ...state.activeSeats.slice(seatIndex)]
хмм, мне нужен не индекс а _currentPoints чтобы положить его в основной массив, то есть изменить массив с этими правками на нижнем уровне
Andrei
куда именно?
Ivan
Ребят такой вопрос, делаю авторизацию с сохранением токена и некоторых данных в локал сторедж для использования этих данных в сторе редакса делаю так то есть инициализирую эти данные в инишал стейте это вообще норм так писать?
Ivan
сами данные записываю в локалсторедж в саге после получения
Andrei
запрос на получение стейта, стейт получили, форма рендерится, у формы начинают кидать запросы селекты, они не подхватывают начальный стейт
нихера не понимаю. а зачем тебе начальный стейт, если у тебя уже есть новый? или ты используешь разные данные для формы и селектов?
Bogdan
нихера не понимаю. а зачем тебе начальный стейт, если у тебя уже есть новый? или ты используешь разные данные для формы и селектов?
вот форма, вот данные, данные из запроса, но у селекта на момент рендера формы нету списка, выбрать не откуда, селект остается пустым, я решил проблему, я сделал useMemo в унивирсальном селекте, который чекает стейт формика, и список селекта, если что то меняется он обновит поле и данные подсосуться