如题,各位我有一个项目,现在有一个需求,在弹出窗口中跳转到一个选择页面,选择完成之后返回原来的页面,如何保持原来的页面状态不变?
尝试过使用keep-alive但是效果不理想。
请问有什么办法,或者什么思路!
备注:页面都是同一个站点的
如题,各位我有一个项目,现在有一个需求,在弹出窗口中跳转到一个选择页面,选择完成之后返回原来的页面,如何保持原来的页面状态不变?
尝试过使用keep-alive但是效果不理想。
请问有什么办法,或者什么思路!
备注:页面都是同一个站点的
在Vue中,你可以使用Vue Router的编程式导航和Vuex的状态管理来实现这个需求。以下是一个简单的实现方案:
首先,你需要安装并设置Vue Router和Vuex。然后,你可以创建一个新的Vuex存储来保存你在不同页面之间切换时需要保留的数据。
// store.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
// 保存页面状态的数据
},
mutations: {
// 更新页面状态的数据
},
actions: {
// 更新页面状态的数据
},
});
然后,在你的主Vue实例中,你可以使用this.$store
来访问这个存储。当用户导航到新的页面时,你可以在Vuex存储中保存需要保留的数据。当用户返回原来的页面时,你可以从Vuex存储中获取这些数据并更新页面的状态。
// main.js
import Vue from 'vue';
import App from './App.vue';
import store from './store'; // 引入刚才创建的store.js
import router from './router'; // 引入router.js
Vue.config.productionTip = false;
new Vue({
router,
store, // 将store添加到Vue实例中,使其可以在组件中使用this.$store来访问
render: h => h(App),
}).$mount('#app');
在你的组件中,你可以使用this.$store.state
来访问存储中的状态数据,使用this.$store.commit
来提交一个突变来更新状态数据,使用this.$store.dispatch
来派发一个动作来异步更新状态数据。
最后,你可以在Vue Router的导航守卫中添加一些逻辑,以便在用户导航到新的页面时保存状态数据,并在用户返回原来的页面时恢复这些数据。
这是一个基本的实现方案,具体的实现细节可能因你的项目需求而有所不同。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
两个思路供参考: