美文网首页工作生活
2019-06-30 路由基础、动态路由、使用axios发送Aj

2019-06-30 路由基础、动态路由、使用axios发送Aj

作者: 々_18C | 来源:发表于2019-07-01 21:54 被阅读0次

    vue-router: 路由

    如果在一个模块化工程中使用它,必须要通过 Vue.use() 明确地安装路由功能:

    在你的文件夹下的 src 文件夹下的 main.js 文件内写入以下代码

    动态路由匹配

    我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们有一个 User 组件,对于所有 ID

    各不相同的用户,都要使用这个组件来渲染。那么,我们可以在 vue-router 的路由路径中使用『动态路径参数』(dynamic

    segment)来达到这个效果:

    {path:"/two:id",component:{template:"#b"},},

    当我们在地址后面直接添加任意字符,我们会发现文档内容随着我们的更改而改变.

    嵌套路由

    我们经常将动态路由和嵌套路由共同使用,嵌套路由即是在原路由的基础上增加一个 children ,children 是一个数组.并且我们还需要在原来的组件上添加< router-view >来渲染 chlidren 里面的路由.

    第二个router

    user:{{ $route.params.id }}

    编程式导航

    除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。

    router.push(location)

    想要导航到不同的 URL,则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之前的 URL。

    当你点击 <router-link> 时,这个方法会在内部调用,所以说,点击 <router-link :to="..."> 等同于调用 router.push(...)。

    该方法的参数可以是一个字符串路径,或者一个描述地址的对象。

    axios

    通用的 ajax 请求库, 官方推荐, vue2.x 使用广泛

    // 引入模块

    import axios from 'axios'

    // 发送 ajax 请求

    axios.get(url)

    .then(response => {

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

    })

    .catch(error => {

    console.log(error.message)

    })

    vuex 是什么简单来说: 对 vue 应用中多个组件的共享状态进行集中式的管理(读/写)

    状态自管理应用

    1)state: 驱动应用的数据源

    2)view: 以声明方式将 state 映射到视图

    3)actions: 响应在 view 上的用户输入导致的状态变化(包含 n 个更新状态的方法)

    vuex 核心概念和 API

     state

    1)vuex 管理的状态对象

    2)它应该是唯一的

    const state = {

    xxx: initValue

    }

     mutations

    1)包含多个直接更新 state 的方法(回调函数)的对象

    2)谁来触发: action 中的 commit('mutation 名称')

    3)只能包含同步的代码, 不能写异步代码

    const mutations = {

    yyy (state, {data1}) {

    // 更新 state 的某个属性

    }

    }

     actions

    1)包含多个事件回调函数的对象

    2)通过执行: commit()来触发 mutation 的调用, 间接更新 state

    3)谁来触发: 组件中: $store.dispatch('action 名称', data1) // 'zzz'

    4)可以包含异步代码(定时器, ajax)

    const actions = {

    zzz ({commit, state}, data1) {

    commit('yyy', {data1})

    }

    }

     getters

    1)包含多个计算属性(get)的对象

    2)谁来读取: 组件中: $store.getters.xxx

    const getters = {

    mmm (state) {

    return ...

    }

    }

     modules

    1)包含多个 module

    2)一个 module 是一个 store 的配置对象

    3)与一个组件(包含有共享数据)对应

     向外暴露 store 对象

    export default new Vuex.Store({

    state,

    mutations,

    actions,

    getters

    })

     组件中

    import {mapState, mapGetters, mapActions} from 'vuex'

    export default {

    computed: {

    ...mapState(['xxx']),

    ...mapGetters(['mmm']),

    }

    methods: mapActions(['zzz'])

    }

    {{xxx}} {{mmm}} @click="zzz(data)"

     映射 store

    import store from './store'

    new Vue({

    store

    })

     store 对象

    1)所有用 vuex 管理的组件中都多了一个属性$store, 它就是一个 store 对象

    2)属性:

    state: 注册的 state 对象

    getters: 注册的 getters 对象

    3)方法:

    dispatch(actionName, data): 分发调用 action

    相关文章

      网友评论

        本文标题:2019-06-30 路由基础、动态路由、使用axios发送Aj

        本文链接:https://www.haomeiwen.com/subject/auyvcctx.html