,八vue组件通信和路由

4:组件通信的5种方式

props

vue的自定义事件

pubsub第三方库

slot

vuex

props:

父子组件间通信的基本方式

属性值的2大类型:

一般: 父组件-->子组件

函数: 子组件-->父组件

隔层组件间传递: 必须逐层传递(麻烦)

兄弟组件间: 必须借助父组件(麻烦)

vue自定义事件

子组件与父组件的通信方式

用来取代function props

不适合隔层组件和兄弟组件间的通信

pubsub第三方库(消息订阅与发布)

适合于任何关系的组件间通信

slot

通信是带数据的标签

注意: 标签是在父组件中解析

vuex

多组件共享状态(数据的管理)

组件间的关系也没有限制

功能比pubsub强大, 更适用于vue项目

5:ajax请求

(1)vue-resource

npm install vue-resource –save

// 引入模块

import VueResource from 'vue-resource'

// 使用插件

Vue.use(VueResource)

// 通过 vue/组件对象发送 ajax 请求

this.$http.get('/someUrl').then((response) => {

// success callback

console.log(response.data) //返回结果数据

}, (response) => {

// error callback}

(2)axios

npm install axios –save

// 引入模块

import axios from 'axios'

// 发送 ajax 请求

axios.get(url)

.then(response => {

console.log(response.data) // 得到返回结果数据

})

.catch(error => {

console.log(error.message)

})

6:vue-router

1:路由:(1)定义路由组件 (2)配置路由 (3)引入路由

组件 拆分组件,编写静态组件,动态组件

定义路由组件:(1)注册路由(2)使用路由 <router-link> <router-view>

路由组件:News.vue Message.vue

配置路由:

path: '/home',

component: home,

children: [

{

path: 'news',

component: News

},

{

path: 'message',

component: Message

}

]

使用路由 <router-link to="/home/news">News</router-link>

<router-link to="/home/message">Message</router-link>

<router-view></route-view>

2:路由组件传递数据

(1) 路由路径携带参数(param/query)

配置路由

children: [{path: 'mdetail/:id', component: MessageDetail }]

路由路径:<router-link :to="'/home/message/mdetail/'+m.id">{{m.title}}</router-link>

路由组件中读取请求参数 this.$route.params.id

<router-link :to="`/home/message/detail/${message.id}`"> {{message.title}}</router-link>

(2)缓存路由对象

<keep-alive>

<router-view></router-view>

</keep-alive>

//路由历史记录

(1) this.$router.push(path): 相当于点击路由链接(可以返回到当前路由界面)

(2) this.$router.replace(path): 用新路由替换当前路由(不可以返回到当前路由界面)

(3) this.$router.back(): 请求(返回)上一个记录路由

(4) this.$router.go(-1): 请求(返回)上一个记录路由

(5) this.$router.go(1): 请求下一个记录路由