Завтра
На слуху нет, но я хейчу axios за interceptors
Дима
мне нужен глобальный хук для нормализации всех ответов и "локальный" хук, для нормализации конкретных запросов.
Завтра
Для этого есть Apicase.of
Дима
а после (т.к. гоферы должны страдать) мне нужно открывать вебсокет соединение и ждать окончания работы. ах да, перед этим я должен научить js цифры в строки превращать автоматом при жсонофикации. ВЕДЬ В ГО ТАК ПРОЩЕ И МЫ БУДЕМ ТАКУЮ ЕБАНУТУЮ АПИШКУ ДЕЛАТЬ
Дима
умирте.
Дима
https://github.com/apicase/apicase-core
Дима
где ws в адаптерах?
Дима
оно сейчас вроде как даже популярнее socketio
Завтра
где ws в адаптерах?
В процессе) Не все сразу, я только вчера services выпустил)
Завтра
Я сейчас одну багу пофиксить хочу
Завтра
ну уже завтра сделаю это, сегодня уже поздно
Дима
ты кстати джуна на свои рулеточки нашел?
Завтра
Суть в чем Несколько раз вызванный Apicase.of().of() багается и кладет в опции не то, что нужно А Apicase.container как раз вызывает of для каждого То есть Apicase.of().container() сейчас не робит Но там мелочь, я пофикшу, просто если что - держу в курсе)
Завтра
ты кстати джуна на свои рулеточки нашел?
неа, так я ушел потом оттуда в итоге но сейчас опять вернулся
Дима
забавно.
Дима
слушай, всё круто, но может тебе не адаптеры сделать в той либе
Дима
точнее не так
Дима
что если адаптеры вынести в основные отдельные пакеты
Дима
тогда ты сможешь фигачить более высокие уровни абстракции и запилить также как в apipie а то и проще
Дима
всё равно все эти твои хуки и так далее будут разниться от адаптера к адаптеру
Завтра
Бтв я уже нашел баг)
Завтра
что если адаптеры вынести в основные отдельные пакеты
они итак в отдельных пакетах будут просто built-in это fetch и xhr
Завтра
Object.assign?
там все чуть сложнее
Завтра
В первом это mergeDeep, во втором mergeWith(concat)
Дима
они итак в отдельных пакетах будут просто built-in это fetch и xhr
нене, именно сделать бейзлиб, а дальше отказаться от адаптеров и испрользовать "надстройки". Больше свободы же будет.
Дима
так ассигн же в глубь тоже мержит
Завтра
Нет
Дима
> Object.assign({f: 1, g: {a: 33}}, {g:{a:34}}) { f: 1, g: { a: 34 } }
Завтра
О.о чет не помню такого, всегда были кучи deepmerge хэлперов не суть
Завтра
о, вот теперь работает
Oleg
#whois Салют. Работаю в вебе давно. Сам маркетолог, специализируюсь на соц. сетях. Умею кодить на php + js, пользуюсь laravel + vue js. До недавнего времени сидел на ангуляре первом. У меня агентство своё. Где я официально один и переодически на удаленке помогают по коду и всему остальному. Больше времени я делаю рекламу, так что скил в коде растёт медленнее :) Сейчас конкретно развиваем приложения свои для работы с соц. медиа. Раз-два в месяц сайты пилим клиентам. Вроде все. Зовут Олег, рад знакомству.
Дима
о, вот теперь работает
чет у тебя энивей сложнее.
Дима
но лан, завтра я тоже запилю что-то подобное
Завтра
чет у тебя энивей сложнее.
Тебе эти вложенности не нужны
Дима
мне очень нужно.
Завтра
Я не про это
Завтра
base.query тебе не нужно дергать)
Завтра
Apicase.of({ hooks }).container(services)
Завтра
Вот что тебе нужно
Завтра
Здесь нет сложности - здесь просто еще один слой абстракции, который ты опишешь один раз в жизни (максимум - один раз в проекте) и будешь радоваться
Завтра
Запушил фикс в обоих пакетах, если что Ушел баиньки 😴
Rafael 🌵
все доки не актуальны
Сегодня попробую старую версию в отдельную ветку закинуть, там и старые доки будут
Rafael 🌵
и заменим её на compose
А вот это поясни
Alexey
Всем привет. Вопрос такой. Почему теряется реактивность? computed: { partnerCart () { return this.$store.getters.getPartnersCarts[this.index] }, showOptions () { return this.partnerCart.showOptions } }, В vuex getPartnersCarts поменял в нужном элементе массива значение showOptions, а в компоненте это не отобразилось
Flexo
Как поменял?
Alexey
register (partnerCart) { // Обработчик кнопки "Оформить заказ" this.$store.commit('setpartnerCartShowOptions', partnerCart) }
Flexo
Это экшн. Мутацию покажи
Alexey
Это вызов мутации, вот мутация:
Alexey
export const setpartnerCartShowOptions = (state, payload) => { for (let key in state.partnersCarts) { if (state.partnersCarts[key].partner_id == playload.partner_id) { state.partnersCarts[key] = payload state.partnersCarts[key].showOptions = true } } }
Flexo
Vue.set(state.partnersCarts, key, payload) Попробуй как то так
Rafael 🌵
Тебе Дмитрий уже сказал решение
Alexey
Да, не реактивные данные. Но решение Дмитрия не работает, если надо добавить к вложенному объекту значение. Типа так Vue.set(state.partnerCarts[key], showOptions, true)
Michel
'showOptions' же
Alexey
'showOptions' же
Точно! Спасибо
Alexey
Vue.set() не добавило реактивности. Вот шляпа. Значит проблема глубже.
Michel
А до этого у тебя в partnerCarts не существовало свойства showOptions ?
Alexey
Нет
Michel
Сделай так чтобы существовало ( например showOptions = null)
Michel
Иначе vue некуда втыкать свои геттеры и сеттеры
Alexey
А если создавать это свойство в момент создания объекта partnerCarts?
Michel
ну да
Alexey
state.partnersCarts = payload for (let item in state.partnersCarts) { Vue.set(state.partnersCarts[item], 'showOptions', state.partnersCarts[item] ? state.partnersCarts[item].showOptions : false) }
Alexey
в момент создания значение undefined
Alexey
Но это не помогло
Rafael 🌵
Может уже стоит закинуть код куда-нибудь, а?
Michel
@Fl0pZz так ему его не выкусить / долго выкусывать из проекта походу
Michel
@leshgan тогда моей телепатии не хватает
Alexey
@Fl0pZz так ему его не выкусить / долго выкусывать из проекта походу
конечно, всё накручено, наверчено, от локального бэка приходят данные, даже не представляю как выложить код можно(
Alexey
Смысл в чём. Приходит из бэка корзина с товарами, мне надо в этом объекте (или не надо? или не в этом объекте, а создать другой?) добавить свойства showOptions и isCommited чтобы в зависимости от их значений отображать форму ввода опций. Вот как бы вы сделали?
Alexey
Причём корзина состоит из нескольких корзин (partners), поэтому там цикл по объекту.
Michel
я бы написал как-то так state.partnerCarts = payload.map(item => ({ ...item, isComitted: null, showOptions: null }))
Alexey
я бы написал как-то так state.partnerCarts = payload.map(item => ({ ...item, isComitted: null, showOptions: null }))
Идея. Спасибо. Там в бэке при каждом изменении отправляется корзина (ну то есть поменял количество товара на фронте, аякс шлёт запрос на увеличение, бэк увеличивает и возвращает изменённую корзину). Получается эти опции не будут сохранены. Значит надо делать экшн как ты написал только на первичное создание и следить, чтобы этот экшн не вызывать на изменения? Для изменений отдельный похожий экшн, не трогающий эти созданные опции?
Michel
@leshgan тогда тебе надо мержить пришедшее с бека с уже имеющимся стейтом. Как это делать - вопрос глубокий, философский, тебе самому надо принять решение.