导航:首页 > 方法技巧 > 组件中如何调用vuex中的方法

组件中如何调用vuex中的方法

发布时间:2022-11-22 17:15:04

‘壹’ Vue组件的使用

通过ref来获取页面上的dom

若在一个组件<item>中添加上ref,那么获取到的dom就是对应的组件,也就是可以获取到组件的引用。

可以获取到组件中定义的data数据

父组件传值给子组件通过属性来传。

过来的值赋值给定义的值,然后修改那个值

子组件通过事件触发来向父组件传值

定义一个全局组件

父组件给子组件通过属性传递一些值,而子组件做的一些约束就是组件的参数校验

父组件要传一个名叫content的属性,而子组件刚好定义了content的prop,这个就是props特性

非props特性

例如:给子组件的标签中定义一个click事件

上面的实现是错误的,原因就是在子组件中定义的@click中的click是监听的自定义事件的名称,它是接收子组件触发的事件名称,如:this.$emit('click'),@click是接收这样的事件的,并不是我们熟知的点击事件

实现上面的例子

方法一:

方法二

在click中添加.native就可标明为原生事件

方法一,使用Vuex

方法二,使用发布订阅模式,也称为总线机制

怎么使父组件给子组件优雅的传递dom,例如父组件要给子组件传递<p>Dell</p>

按以往的方法应该是

使用slot可以解决问题

如果template中有多个<slot>,那怎么确定哪个slot要那些dom呢

可以通过名称来确定对应的dom,如

通过动态组件来怎么实现呢

切换的时候,每次都是先销毁,然后再创建子组件,每次切换都销毁和创建

v-once就是为了避免这种情况的发生,使用v-once第一次展示的时候,会将组件放到内存中,第二次就不需要创建组件了,可以直接从内存中读取到

参考
Vue.js API文档
慕课网:Vue2.5开发去哪儿网App 从零基础入门到实战项目

‘贰’ vuex的基本使用

作用 :

它采用集中式存储管理应用的所有组件的状态。(统一管理所有组件中公用的数据)

组成:

state:管理所有的状态(数据)

getter:state 的计算属性

mutations:用来操作 state

用法 :

1.0 定义

// 在 store/index.js 中

export default new Vuex.Store ({state:{userInfo:''}})

2.0 使用

// 在 .vue(组件) 中

// // 取值

this.$store.state.userInfo

// // 赋值

this.$store.state.userInfo={}

总结:

在 vuex 中,如果要给 vuex 中的数据赋值,不能直接得到 state 去赋值,这样不配合 vuex 设计规范

vuex - mapState 基本使用

它是 vuex 中 state 对应的一个辅助函数

mapState:可以用来简化 vuex 中 state 中属性的使用

步骤:

导入

import { mapState } from 'vuex'

定义

computed:{...mapState(["state中的属性名"])}

使用

this.state中的属性名 === this.$store.state.state中的属性名

vuex - mutations 的使用

在 vuex 中,如果要给 state 中的属性赋值,建议大家借助 mutation 来赋值

步骤:

1.0 在 mutations 中定义赋值方法

// 在 store/index.js 中

export  default  new  Vuex.Store({

    state: { userInfo: ' ' },

    mutations: { setUserInfo ( state, payload ) {

            state.userInfo = payload

    }

}})

2.0 在组件中调用方法

// 在 .vue(组件) 中

 // 取值

this.$store.state.userInfo

 // 赋值

this.$store.commit('setUserInfo', data)

vuex - mapMutaions 基本使用

mapMutaions : 可能用来简化 vuex 中的 mutations 中方法的调用

步骤:

导入 mapMutations

import { mapMutaions } from 'vuex'

定义方法:

methods:{...mapMutations(['setUserInfo'])}

使用方法

this.setUserInfo('abc')

总结:

vuex:

state:管理状态

取值:

this.$store.state.xxx

...mapState(['xxx'])  或者  ...mapState({ myname: 'xxx' })

mutaions

取值:

this.$store.commit('xxx', payload)

...mapMutations(['xxx'])  或者  ...mapMutations({ myname: 'xxx' })

‘叁’ Vuex简单使用

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
如果一份数据需要在多个组件中使用,组件间传值又比较复杂,就可以使用vuex托管数据。

state选项: 定义状态(状态就是数据)。
mutations选项: 定义修改状态的方法(注意:这里面只能定义同步方法)。

$store: 返回的是当前项目中的全局状态对象。
commit()方法: 用于执行指定的mutations里面的方法。

在组件中,直接通过$store.state就可以获取到全局状态对象管理的状态数据,直接渲染到页面。

state选项: 定义状态(状态就是数据)。

通过 $store.state.数据名 使用。

getters选项: 定义计算属性。方法的参数是状态对象。

通过 $store.getters.属性名 使用计算属性。

mutations选项: 定义修改状态的方法(注意:这里的方法一般都是同步方法)。方法的第一个参数是状态对象,第二个参数是新值。

通过 commit() 方法,调用mutations里面的方法。

actions选项: 定义操作状态的方法(这里的方法可以定义异步方法)。
注意: actions里的方法最好不要直接操作state状态,而是通过调用mutations里面的方法去修改状态。所以,actions直接操作的是mutations。

通过 dispatch() 方法,调用actions里面定义的方法。

由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
为了解决以上问题,Vuex 允许我们将 store 分割成模块(mole)。每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块。

namespaced属性: 默认情况下,action、mutation 和 getter 是注册在全局命名空间的。通过设置namespaced属性为true,将action、mutation 和 getter全部注册到私有命名空间中。

要从私有模块中获取数据,方式是: $store.state.模块名称.模块的数据

要从私有模块中获取计算属性,方式是: $store.getters['模块名/计算属性']

调用私有模块里面的mutations定义的方法,方式是: $store.commit('模块名/方法名',新值)

调用私有模块里面的actions定义的方法,方式是: $store.dispatch('模块名/方法名',新值)

直接在模板中使用全局状态管理数据,表达式会写的很长。所以可以使用计算属性。

通过映射函数mapState、mapGetters、mapActions、mapMutations,可以将vuex.store中的属性映射到vue实例身上,这样在vue实例中就能访问vuex.store中的属性了,便于操作vuex.store。

如果vuex里面state的数据名称 跟 页面中的计算属性名称相同,就可以使用 mapState 映射函数,自动生成页面中的计算属性。
如果vuex里面getters的数据名称 跟 页面中的计算属性名称相同,就可以使用 mapGetters 映射函数,自动生成页面中的计算属性。
注意: 如果要映射模块里面的state/getters,函数的第一个参数设置为模块的名称。

如果定义的方法名跟全局管理对象中mutations里面的方法名相同,并且定义的方法会带有一个参数,通过参数传递数据。满足该规则,就可以使用 mapMutations 映射函数生成方法。
如果定义的方法名跟全局管理对象中actions里面的方法名相同,并且定义的方法会带有一个参数,通过参数传递数据。满足该规则,就可以使用 mapActions 映射函数生成方法。
注意: 如果要映射私有模块中mutations/actions里面的方法,函数的第一个参数设置为模块的名称。

‘肆’ vuex的几种调用方法

就是子组件给自己加的一把锁,不让父组件轻易的访问进来

第一种: 直接调用

第二种: 辅助函数

第三种: 仅做了解

第四种:辅助函数的 升级版

阅读全文

与组件中如何调用vuex中的方法相关的资料

热点内容
杜兰特真正的训练方法 浏览:318
网上买床安装方法 浏览:782
奶奶教裁剪方法简单好用 浏览:449
老人机短信中心在哪里设置方法 浏览:855
化肥中氮的含量检测方法视频 浏览:77
照片如何加水印方法 浏览:534
有点打呼噜有什么好方法 浏览:406
如何赏析诗句方法公式 浏览:725
快速融化冰块的方法 浏览:131
手臂痛怎么治疗方法 浏览:487
days360函数的使用方法 浏览:635
治疗湿尤有效方法 浏览:913
小米的快捷键设置在哪里设置方法 浏览:773
用底线思维方法解决问题 浏览:282
检测方法elisa法 浏览:196
远离口臭的最佳治疗方法 浏览:688
中药及其制剂常用的纯化方法 浏览:153
充电机使用方法步骤12V 浏览:1003
正确怀孕的方法 浏览:52
iphone6跳屏解决方法 浏览:897