最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 记录一些Vuex笔记

    正文概述 掘金(略略略丶77)   2021-06-08   594

    Vuex笔记

    vuex是什么

    github站点: https://github.com/vuejs/vuex
    在线文档: https://vuex.vuejs.org/zh-cn/
    简单来说: 对应用中组件的状态进行集中式的管理(读/写)
    

    状态自管理应用

    state: 驱动应用的数据源
    view: 以声明方式将state映射到视图
    actions: 响应在view上的用户输入导致的状态变化(包含n个更新状态的方法)
    

    多组件共享状态的问题

    多个视图依赖于同一状态
    来自不同视图的行为需要变更同一状态
    以前的解决办法
    	* 将数据以及操作数据的行为都定义在父组件
    	* 将数据以及操作数据的行为传递给需要的各个子组件(有可能需要多级传递)
    vuex就是用来解决这个问题的
    

    vuex的核心概念

    1). state

    vuex管理的状态对象
    它应该是唯一的
    const state = {
    	xxx: initValue
    }
    

    2). mutations

    包含多个直接更新state的方法(回调函数)的对象
    谁来触发: action中的commit('mutation名称')
    只能包含同步的代码, 不能写异步代码
    const mutations = {
    	yyy (state, data) { 
    		// 更新state的某个属性
    	}
    }
    

    3). actions

    包含多个事件回调函数的对象
    通过执行: commit()来触发mutation的调用, 间接更新state
    谁来触发: 组件中: $store.dispatch('action名称')  // 'zzz'
    可以包含异步代码(定时器, ajax)
    const actions = {
    	zzz ({commit, state}, data1) {
    		commit('yyy', data2)
    	}
    }
    

    4). getters

    包含多个计算属性(get)的对象
    谁来读取: 组件中: $store.getters.xxx
    const getters = {
    	mmm (state) {
    		return ...
    	}
    }
    

    5). modules

    包含多个module
    一个module是一个store的配置对象
    与一个组件(包含有共享数据)对应
    

    6). 向外暴露store对象

    export default new Vuex.Store({
    	state,
    	mutations,
    	actions,
    	getters
    })
    

    7). 组件中:

    import {mapGetters, mapActions} from 'vuex'
    export default {
    	computed: mapGetters(['mmm'])
    	methods: mapActions(['zzz'])
    }
    
    {{mmm}} @click="zzz(data)"
    

    8). 映射store

    import store from './store'
    new Vue({
    	store
    })
    

    9). store对象

    1.所有用vuex管理的组件中都多了一个属性$store, 它就是一个store对象
    2.属性:
      state: 注册的state对象
      getters: 注册的getters对象
    3.方法:
      dispatch(actionName, data): 分发action 
    

    将vuex引到项目中

    1). 下载: npm install vuex --save

    2). 使用vuex

    1.store.js
    	import Vuex from 'vuex'
    	export default new Vuex.Store({
    		state,
    		mutations,
    		actions,
    		getters,
    		modules
    	})
    2.main.js
    	import store from './store.js'
    	new Vue({
    		store
    	})
    

    下载网 » 记录一些Vuex笔记

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元