Vue中页面跳转的传递和获取参数详解

1565人浏览 / 0人评论 / 添加收藏

Vue是一个MVVM框架,它是以组件化的方式开发SPA,因此页面之间的跳转是非常常见的操作。而在实际开发中,页面之间的数据传递也是非常常见的需求,比如需要把某个页面的数据传递给下一个页面进行处理等等。本文将从以下几个方面详细阐述Vue中页面跳转传递和获取参数的方法。

一、通过$route.params来传递参数

在Vue中,我们可以使用$route来获取当前路由信息,而$route.params即为当前路由所传递的参数。我们可以在当前路由的path中添加参数,例如:

    {
        path: '/example/:id',
        component: Example
    }

在上述代码中,我们在path中设置了一个:id,这个id就是我们要传递的参数名称。在Example组件中,我们可以使用$route.params.id来获取这个参数:

    export default {
        mounted() {
            console.log(this.$route.params.id);
        }
    }

在上述代码中,我们通过mounted钩子获取当前路由的参数,然后打印出来。当我们访问这个路由时,例如访问/example/1,控制台将会输出1。

二、通过query来传递参数

在Vue中,我们还可以使用query来传递参数。与$params不同的是,$query是以键值对的形式传递参数。我们可以在路径中添加?和参数名称=参数值,例如:

    {
        path: '/example',
        component: Example
    }

在上述代码中,我们没有为path添加参数。在Example组件中,我们可以通过this.$route.query来获取参数:

    export default {
        mounted() {
            console.log(this.$route.query.name);
        }
    }

在上述代码中,我们通过mounted钩子获取当前路由的参数,然后打印出来。当我们访问这个路由时,例如访问/example?name=Tom,控制台将会输出Tom。

三、通过props传递参数

除了路由传参之外,我们还可以通过props来传递参数。这种方式比较适用于子组件和父组件之间的参数传递。我们可以在父组件中通过props来传入参数,例如:

    
    <script>
        import ChildComponent from 'child-component';
        export default {
            data() {
                return {
                    title: 'Hello Vue'
                }
            },
            components: {
                ChildComponent,
            }
        }
    </script>

在上述代码中,我们通过:title="title"传递了title参数给子组件。在子组件中,我们需要在props中声明接收这个参数:

    
    <script>
        export default {
            props: {
                title: {
                    type: String,
                    required: true,
                }
            }
        }
    </script>

在上述代码中,我们声明了props中必须要有一个title参数,它的类型是String类型。我们可以在模板中使用这个参数渲染页面。

四、通过vuex来传递参数

最后一种方式是通过Vuex来传递参数。如果我们需要在多个组件之间共享数据,我们可以使用Vuex。在Vuex中,我们可以使用state来存储共享的数据,使用mutations来修改数据。在需要用到这些数据的组件中,我们可以使用getters来取到这些数据。

这里我们简要介绍一下Vuex的基本用法。我们需要在src目录下创建一个store.js文件,然后在这个文件中初始化一个store:

    import Vue from 'vue';
    import Vuex from 'vuex';
    Vue.use(Vuex);
    const store = new Vuex.Store({
        state: {
            count: 1
        },
        mutations: {
            add(state) {
                state.count++;
            }
        },
        getters: {
            getCount: state => state.count
        }
    })
    export default store;

在上述代码中,我们初始化了一个Vuex的store,并声明了一个state.count的值和一个mutations.add(),用于修改state.count的值。我们还声明了一个getters.getCount()来获取state.count的值。

接下来,在需要用到这些数据的组件中,我们需要引入store,并使用getters来获取数据:

    import store from 'store';
    export default {
        mounted() {
            console.log(store.getters.getCount);
        }
    }

在上述代码中,我们在mounted钩子中获取store的getters.getCount(),然后在控制台中打印出来。在其他需要使用到store中的数据的组件中,我们可以使用类似的方式来获取数据。

五、总结

本文以Vue页面跳转传递和获取参数为中心,从不同的角度详细阐述了Vue中页面跳转传递和获取参数的方法。页面之间的数据传递在实际开发中经常用到,深入理解Vue中页面跳转传递和获取参数的方法,将有助于我们更好的开发Vue应用。

 

全部评论