169 похожих чатов

Всем привет! Подскажите, столкнулся с такой проблемой: У меня

есть компонент Foo и компонент Bar, они используют один модуль сторы. Эти компоненты никогда не появляются вместе на одной странице. Состояние сторы может быть довольно жирным, так что мне необходимо перед уничтожением одного из компонентов ресетнуть это состояние. Action для сброса состояния я вызываю в хуке beforeDestroy в каждом компоненте. Перед отрисовкой одного из компонентов я инициализирую состояние определенными значениями вызывая соответствующие actions в хуке created. Проблема: если я перейду на страницу где рисуется компонент Foo, а потом на страницу где рисуется компонент Bar, то так как во Vue beforeDestroy отрабатывает позже чем created новых компонентов, то сначала я инициализирую логику через created в Bar, а потом эти значения сбросятся в beforeDestroy Foo, и логика инициализации просто потеряется. Такую проблему сброса стора можно как то решить? Инициализировать логику в mounted не подойдет т.к у меня сср :)

15 ответов

20 просмотров

соединить компоненты в один :)

Как вариант, сбрасывать стор перед переключением компонентов

Maksym-Anisimov Автор вопроса

Не очень понимаю что это даст, логика инициализации разная у компонентов

да я больше в шутку )

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

Maksym-Anisimov Автор вопроса

Как только я понял что у меня есть эта проблема, я сразу сказал себе что я выстрелил себе в ногу) Поэтому и написал сюда, может есть быстрое решение, что бы не переписывать много

Со старой нет быстрых решений, за это её и не любят

Не легче ли просто локально на уровне компонента дергать данные каждый раз, без вьюкса?

Вьюкс предразумевает глобальный стейт, а в вашем случае это просто апи который дергается на двух страницах, и тут нету смысла объединять это в стор. Вы тут не выигрываете ничего, и тем более вы сбрасываете его при удалении компонента

Maksym-Anisimov Автор вопроса

Если писать с нуля - легче :) Исторически получилось так что один из компонентов был завязан на стору, потом появился второй который с такой же логикой, но немного другой, переписывать долго под локальное состояние, поэтому осталась подвязка к сторе у обоих с надеждой на ресет. Как то так

Ну тут тогда на ваше усмотрение, либо поддерживать не очень хорошую архитектуру которая будет возможно еще больше разрастаться, либо сделать по красоте =)

Maksym-Anisimov Автор вопроса

В данный момент нету времени переписывать, поэтому решил спросить идеи для быстрого фикса. Если бы было всегда время переписывать у всех были бы идеальные решения всегда. Я впринципе сделал костыль, но думал может что то поадекватнее будет

Лучше сделать костыль, так как все равно в будущем код будет переписан) Главное что-бы бизнес задача была решена в данном случаи 🙂

Maksym-Anisimov Автор вопроса

Да, тут согласен с вами, любое решение без локального состояние будет костыльным, спасибо. Просто не хочется что бы костыль был супер неявным

Просто надо прокомментировать в коде этот момент и оставить как тех долго и все будет кул )

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта