Mam przypadek użycia wykazu/szczegółu, w którym użytkownik może kliknąć dwukrotnie element na liście produktów, przejść do ekranu szczegółów, aby go edytować, a następnie powrócić do ekranu listy, gdy skończą. Zrobiłem to już za pomocą opisanej tutaj techniki komponentów dynamicznych: https://vuejs.org/v2/guide/components.html#Dynamic-Components. Ale teraz, gdy zamierzam użyć vue-routera w innym miejscu w aplikacji, chciałbym to zmienić, aby zamiast tego używać routingu. Używając techniki dynamicznych komponentów, użyłem funkcji keep-alive, aby upewnić się, że gdy użytkownik przeszedł z powrotem do widoku listy, ten sam wybór był obecny przed edycją. Ale wydaje mi się, że w przypadku routingu składnik listy produktów zostanie ponownie renderowany, co nie jest tym, czego chcę.Zachowaj stan komponentu z vue-routerem?
Wygląda na to, że widok routera może być zapakowany w podtrzymywalny ruch, co rozwiązałoby jeden problem, ale wprowadziłoby wiele innych, ponieważ chcę tylko, aby ta trasa była żywa, nie wszystkie (a obecnie jestem ". m za pomocą pojedynczego widoku routera najwyższego poziomu). Vue 2.1 wyraźnie zrobiło coś, aby rozwiązać ten problem, wprowadzając parametry włączania i wyłączania dla widoku routera. Ale tak naprawdę nie chcę tego robić, ponieważ wydaje się bardzo niezdarne, aby zadeklarować z góry na mojej stronie głównej wszystkie trasy, które powinny lub nie powinny być używane. Byłoby o wiele bardziej zadeklarować, czy chcę zachować ruch w punkcie, w którym konfiguruję trasę (tj. W tablicy tras). Więc jaka jest moja najlepsza opcja?
Oczywiście, zdaję sobie sprawę, że w sklepie zewnętrznym względem dwóch komponentów mogę zachować stan składnika listy, a następnie "odtworzyć" go po powrocie. Ale istnieje wiele danych, które będę musiał zachować, nie wszystkie z nich są częścią rzeczywistych danych komponentu (na przykład pozycja przewijania w tabeli). Miałem nadzieję, że był jakiś schludny sposób, aby uniknąć ponownego renderowania go w ogóle. –
@JohnMoore znalazłeś rozwiązanie? Mam dokładnie to samo pytanie. – andy
W rezultacie udało mi się wyizolować informacje potrzebne do zachowania między różnymi widokami i przechowywania ich jako "workingProductData" w sklepie Vuex. Bardziej skrzypiący niż idealny, ale działa. Prostszym rozwiązaniem, które zastosowałem w innym projekcie, jest posiadanie szczegółów i widoków listy jako części tego samego komponentu, przełączanych zgodnie z właściwością "editMode" w stanie, przy użyciu v-if/v-else. –