组件时Vue.js最强大的功能,组件可以封装重用的代码,通过传入对象的不同,实现组件的复用,但组件传值就成为一个需要解决的问题。
父组件向子组件传值
组件实例的作用域时孤立的。这意味着不能在子组件的模板内直接引用父组件的数据,要让子组件使用父组件的数据,我们需要通过子组件的props选项实现。
子组件:
1 | <template> |
子组件需要从父组件获取logo的值,就需要使用props:[‘logo’]
1 | <script> |
父组件:
1 | <template> |
1 | <script> |
子组件向父组件传值
子组件主要通过事件传递数据给父组件
子组件:
1 | <template> |
1 | <script> |
其中transferUser是一个自定义的事件,this.username将通过这个事件传递给父组件
父组件:
1 | <template> |
1 | <script> |
getUser方法中的参数msg就是从子组件传递过来的参数username
路由传值
1 | this.$router.push({ |
在跳转页面的时候在页面中使用< router-link>标签进行路由传值。
需要之一的时,使用params传值的时候,在页面刷新的时候,参数会消失,使用query则不会有这个问题。
取值方式为:
1 | this.$route.params.paramName |
通过localStorage或者sessionStorage来存储数据
setItem存储value
- 用途:将value存储到key字段
- 用法:.setItem(key,value)
1 | sessionStorage.setItem("key","value") |
使用getItem获取value
- 用途: 获取指定key本地存储的值
- 用法:.getItem(key
1 | var value = sessionStorage.getItem("key") |
Vuex
在应用复杂的时候,可以使用Vuex来统一管理数据状态
- Vuex:可以理解是全局状态管理的一个插件,理论上所有组件都能拿到Vuex里面的数据
- State:可以理解为组件中的data,就是放数据的地方
- Mutation: 可以理解为提交数据给data的方法(同步)
- Action: 可以理解为提交数据给Mutation然后通过Mutation再提交给data的方法(异步)
- Getter: 可以将data的数据进行过滤,然后组件通过Getter方法获取过滤的data