• 中文
  • 注册
    • 查看作者
    • vue-router路由传参的两种方式

      tip: 用params传参,F5强制刷新参数会被清空,用query,由于参数适用路径传参的所以F5强制刷新也不会被清空。(传参强烈建议适用string)

      也可以选用sessionstorage/localstorage/cookie存储

      params:参数不会显示到路径上

      1:配置路径rutes

      export default new Router({
        routes: [
          {
            path: '/testVueRouter',
            name: 'TestVueRouter',
            component: TestVueRouter
          },
          {
            path: '/testVueRouterTo',
           // 一定要写name,params必须用name来识别路径
            name: 'TestVueRouterTo',
            component: TestVueRouterTo
          }
        ]
      })

      2:传递参数:用$router

      <!-- test-vue-router页面 -->
      <template>
        <div>
          <a @click="routerTo()">query传参</a>
        </div>
      </template>
      <script>
      export default {
        methods: {
          routerTo() {
            this.$router.push({
              name: `TestVueRouterTo`,
              params: {
                page: '1', code: '8989'
              }
            })
          }
        }
      }
      </script>

      3:接受参数:用$route,少个r,注意啦

      <!-- test-vue-router-to页面 -->
      <template>
        <div>
        </div>
      </template>
      <script>
      export default{
        data() {
          return {
            page: '',
            code: ''
          }
        },
        created() {
          this.getRouterData()
        },
        methods: {
          getRouterData() {
            this.page = this.$route.params.page
            this.code = this.$route.params.code
            console.log('page', this.page)
            console.log('code', this.code)
          }
        }
      }
      </script>

      query:最好也用name来识别,保持与params一致性,好记了,路径传参

      1:路径配置(跟params一样,代码不写了)

      2:传递参数页

      <!-- test-vue-router页面 -->
      <template>
        <div>
          <a @click="routerTo()">query传参</a>
        </div>
      </template>
      <script>
      export default {
        methods: {
          routerTo() {
            this.$router.push({
              name: `TestVueRouterTo`,     // 只是把query改了,其他都没变
              query: {
                page: '1', code: '8989'
              }
            })
          }
        }
      }
      </script>

      3:接受参数

      <!-- test-vue-router-to页面 -->
      <template>
        <div>
        </div>
      </template>
      <script>
      export default{
        data() {
          return {
            page: '',
            code: ''
          }
        },
        created() {
          this.getRouterData()
        },
        methods: {
          getRouterData() {
            // 只是改了query,其他都不变
            this.page = this.$route.query.page
            this.code = this.$route.query.code
            console.log('page', this.page)
            console.log('code', this.code)
          }
        }
      }
      </script>

      下面我们采用path: '/testVueRouterTo'

      1:query(成功)

      <!-- test-vue-router页面 -->
      <template>
        <div>
          <a @click="routerTo()">query传参</a>
        </div>
      </template>
      <script>
      export default {
        methods: {
          routerTo() {
            this.$router.push({
              path: '/testVueRouterTo',
              query: {
                page: '1', code: '8989'
              }
            })
          }
        }
      }
      </script>
      <!-- test-vue-router-to页面 -->
      <template>
        <div>
      <!--     <span>{{page}}</span>
          <span v-show="code === '89'">{{code}}</span>
          <span>{{password}}</span> -->
        </div>
      </template>
      <script>
      export default{
        data() {
          return {
            page: '',
            code: '',
            password: ''
          }
        },
        created() {
          this.getRouterData()
        },
        methods: {
          getRouterData() {
            // debugger
            this.page = this.$route.query.page
            this.code = this.$route.query.code
            console.log('page', this.page)
            console.log('code', this.code)
          }
        }
      }
      </script>

      2:params:(不成功)

      <!-- test-vue-router页面 -->
      <template>
        <div>
          <a @click="routerTo()">params传参</a>
        </div>
      </template>
      <script>
      export default {
        methods: {
          routerTo() {
            this.$router.push({
              path: '/testVueRouterTo',
              params: {
                page: '1', code: '8989'
              }
            })
          }
        }
      }
      </script>
      <!-- test-vue-router-to页面 -->
      <template>
        <div>
      <!--     <span>{{page}}</span>
          <span v-show="code === '89'">{{code}}</span>
          <span>{{password}}</span> -->
        </div>
      </template>
      <script>
      export default{
        data() {
          return {
            page: '',
            code: '',
            password: ''
          }
        },
        created() {
          this.getRouterData()
        },
        methods: {
          getRouterData() {
            // debugger
            this.page = this.$route.params.page
            this.code = this.$route.params.code
            console.log('page', this.page)
            console.log('code', this.code)
          }
        }
      }
      </script>

    • 0
    • 0
    • 0
    • 242
    • 请登录之后再进行评论

      登录
    • 做任务
    • 发表内容
    • 实时动态

    • 关于伊迪派 | 联系我们 | 免责声明 | 侵权投诉 | 小黑屋

      本站资源来源于互联网,仅供个人学习参考研究之用,请于下载后24小时内删除。
      如有侵犯您的权益,可通过邮件(admin@idepy.com)、站内通道等方式反馈,本网站将在第一时间处理。
      Copyright © 2019 - 2020 伊迪派(IDEPY), All Rights Reserved · 粤ICP备12030819号-6 · 粤公网安备 44132202100185号