Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題
Vue Router 傳參方式:
1. this.$router.push({ name: ’模塊名稱’, params: { // 各參數(shù) } })
router.js:
export default new Router({ routes: [ { path: ’/paramsPassingByRouter’, component: ParamsPassingByRouter, children: [ { path: ’paramsMode’, name: ’paramsMode’, component: ParamsMode } ] } ]})
ParamsPassingByRouter.vue:
<!-- html --><button @click='paramsMode(testData)'>params傳參</button><!-- js --><script>export default { data () { return { testData: { id: ’20180101’, name: ’張三’, aka: ’z3’, age: ’18’ } } }, methods: { paramsMode (data) { this.$router.push({ name: ’paramsMode’, params: data }) } }}</script>
ParamsMode.vue:
<!-- html --><div class='params-mode'>{{ testData }}</div><!-- js --><script>export default { data () { return { testData: {} } }, created () { this.testData = this.$route.params }}</script>
效果:url:http://localhost:8081/#/paramsPassingByRouter/paramsMode頁面顯示:{'id':'20180101','name':'張三','aka':'z3','age':'18'}
但是刷新頁面后,數(shù)據(jù)會(huì)丟失,顯示:{}。
2. this.$router.push({ name: ’模塊名稱’, query: { // 各參數(shù) } })
router.js:
export default new Router({ routes: [ { path: ’/paramsPassingByRouter’, component: ParamsPassingByRouter, children: [ { path: ’queryMode’, name: ’queryMode’, component: QueryMode } ] } ]})
ParamsPassingByRouter.vue:
<!-- html --><button @click='queryMode(testData)'>query傳參</button><!-- js --><script>export default { data () { return { testData: { id: ’20180101’, name: ’張三’, aka: ’z3’, age: ’18’ } } }, methods: { queryMode (data) { this.$router.push({ name: ’paramsMode’, query: data }) } }}</script>
QueryMode.vue:
<!-- html --><div class='query-mode'>{{ testData }}</div><!-- js --><script>export default { data () { return { testData: {} } }, created () { this.testData = this.$route.query }}</script>
效果:url:http://localhost:8081/#/paramsPassingByRouter/queryMode?id=20180101&name=%E5%BC%A0%E4%B8%89&aka=z3&age=18頁面顯示:{'id':'20180101','name':'張三','aka':'z3','age':'18'}
刷新頁面后,數(shù)據(jù)不會(huì)丟失。
解決刷新頁面數(shù)據(jù)丟失的方案:
使用 this.$router.push({ name: ’模塊名稱’, query: { // 各參數(shù) } }) 方式傳參。
缺點(diǎn):參數(shù)值都拼接在 url 上,url 會(huì)很長,同時(shí)都可被看到。
this.$router.push({ name: ’模塊名稱’, params: { // 各參數(shù) } }) 路由文件設(shè)置的時(shí)候把參數(shù)拼到 url 里。
url:http://localhost:8081/#/paramsPassingByRouter/paramsMode/20180101/%E5%BC%A0%E4%B8%89/z3/18缺點(diǎn):同上。
1 和 2 結(jié)合使用:this.$router.push({ name: ’模塊名稱’, params: { // 各參數(shù) }, query: { // 各參數(shù) } })。
老老實(shí)實(shí)的用 localStorage 存儲(chǔ)。
url: http://localhost:8081/#/paramsPassingByRouter/paramsMode/z3可以與 params 和 query 方式配合使用,可以暴露的參數(shù)顯示在 url 上,同時(shí)刷新參數(shù)也不會(huì)丟失。銷毀頁面的時(shí)候把 localStorage 存儲(chǔ)的內(nèi)容清除。
// router.js{ path: ’paramsMode/:aka’, name: ’paramsMode’, component: ParamsMode}<!-- ParamsMode.vue 修改 --><script>export default { data () { return { testData: {} } }, created () { const tempData = localStorage.getItem(’tempData’) if (tempData) { this.testData = JSON.parse(tempData) } else { this.testData = this.$route.params localStorage.setItem(’tempData’, JSON.stringify(this.$route.params)) } }, beforeDestroy () { localStorage.removeItem(’tempData’) }}</script>
到此這篇關(guān)于Vue router傳遞參數(shù)并解決刷新頁面參數(shù)丟失問題的文章就介紹到這了,更多相關(guān)Vue router傳遞參數(shù)丟失內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 利用CSS3新特性創(chuàng)建透明邊框三角2. PHP循環(huán)與分支知識(shí)點(diǎn)梳理3. 讀大數(shù)據(jù)量的XML文件的讀取問題4. 解析原生JS getComputedStyle5. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)6. css代碼優(yōu)化的12個(gè)技巧7. 前端從瀏覽器的渲染到性能優(yōu)化8. ASP基礎(chǔ)入門第三篇(ASP腳本基礎(chǔ))9. ASP實(shí)現(xiàn)加法驗(yàn)證碼10. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁
