Vuex从入门到实战(二)—— 简单demo学会用两种方式使用State

news/2024/7/10 1:33:42 标签: vue, vuex, state

在Vuex中,State提供唯一的公共数据源,所有共享的数据都要统一放到Store的State中进行存储。

store/index.js
Vue.use(Vuex)

// new一个Vuex实例并暴露出去
export default new Vuex.Store({
  state: {
    count: 0
  }
})

一、组件如何访问State中的共享数据count?

statecountfont_17">第一种方式:this.$store.state.count

如果是在template中调用,则可以省略this,即:{{ $store.state.count}}

第二种方式:借助mapState

先导入mapState,再通过mapState函数将当前组件需要的全局数据,映射为当前的computed计算属性:

import { mapState } from vuex
---------------------------------
computed: {
    // ...表示展开映射,意思就是将全局属性映射为当前组件的计算属性
    ...mapState(['count'])
}

使用时直接调用即可,{{ count }},具体可见下面示例。

二、计数器demo示例

上节新建了项目vuex_demo1,我们直接在上面新增代码即可。

  1. 在store/index.js中添加共享数据count:
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

// new一个Vuex实例并暴露出去
export default new Vuex.Store({
  state: {
    count: 0
  }
})
  1. 删除components文件夹下原有文件,新增加法组件Addition和减法组件Subtraction;
    在这里插入图片描述
    Addition: 使用第一种方式获取count;
<template>
    <div>
        <p>当前count的值为:{{ $store.state.count}}</p>
        <button>+1</button>
    </div>
</template>

<script>
export default {
  data () {
    return {}
  }
}
</script>

Subtraction: 使用第二种方式获取count;

<template>
    <div>
        <p>当前count的值为:{{ count }}</p>
        <button>-1</button>
    </div>
</template>

<script>
import { mapState } from 'vuex'

export default {
  data () {
    return {}
  },
  computed: {
    ...mapState(['count'])
  }
}
</script>

  1. 在App.vue修改成如下代码:
<template>
  <div>
    <my-addition></my-addition>
    <hr>
    <my-subtraction></my-subtraction>
  </div>
</template>
<script>
// 引入组件千万不要加{},否则报错组件未注册
import Addition from './components/Addition'
import Subtraction from './components/Subtraction'

export default {
  data () {
    return {}
  },
  components: {
    'my-addition': Addition,
    'my-subtraction': Subtraction
  }
}
</script>

  1. 效果如下图,成功获取到sdate。
    在这里插入图片描述

视频地址:https://www.bilibili.com/video/BV1h7411N7bg?p=6


http://www.niftyadmin.cn/n/1486179.html

相关文章

在字典中却掉影响召回的长词

一个小应用&#xff0c;show下代码&#xff0c;为了推荐下我非常喜欢的glog,gflag:)感谢google 它们让我的生活更轻松&#xff1a;&#xff09;另外读取数据库用otl相当方便,我用otl封装了下写了一个DBReader,这样处理数据库基本就和处理文本一样了完全相同的接口&#xff0c;完…

Vuex从入门到实战(三)——使用Mutations变更state中的数据

上篇讲到可以通过this.$store.state.count或者...mapState([count])的方式可以拿到我们在state中存储的count值&#xff0c;那么如何修改这个值呢&#xff1f; 很多人都会想到this.$store.state.count&#xff0c;但是这样虽然可以达到目的&#xff0c;却存在很大的隐患——多处…

出勤时间

雇员表出勤表中&#xff0c;只有一个字段为上班总工时&#xff0c;需要计算出正常上班工时&#xff0c;缺勤工时和加班工时。 代码 CREATEFUNCTION[dbo].[udf_WorkingHours]( )RETURNSWorkingHoursTABLE([WorkTicketId]INT,[OperatorDate]DATETIME,[NormalWorkTime]DECIMAL(1…

如何安装Vue.js devtools

官方文档&#xff1a; 具体安装vue-devtools步骤&#xff1a; 克隆仓库&#xff0c;我们就直接下载vue-devtoos压缩包&#xff1a;https://github.com/vuejs/vue-devtools【地址所在的分支为dev】 cd 刚下好的文件夹下&#xff0c;我的是vue-devtools-dev【shift右键选择在此…

一个关于组播的网络问题--暂没有时间确定真实原因

操作系统&#xff1a;Debian 3(内核2.6.8-2-686-smp) 网卡&#xff1a;四块网卡&#xff0c;驱动程序为e1000(e1000.ko) 应用程序&#xff1a;在其中一块或者多块网卡上启动heartbeat(向组播地址发包) 现象&#xff1a;heartbeat绑在ethx发送组播&#xff0c;然而ethx没有插网线…

windows上面链接使用linux上面的docker daemon

1. 修改linux 上面的 docker的 配置文件. vim /usr/lib/systemd/system/docker.service 注意 这个是centos的路径 发现ubuntu的路径不一样 可以通过systemctl status docker 来查看具体的配置文件的路径 ubuntu下面直接在 /lib 路径下 不是在/usr 路径下 载EXECSTART后面增加配…

Vuex从入门到实战(四)——Actions实现异步操作

一、Action用于处理异步任务 如果通过异步操作变更数据&#xff0c;必须通过Action&#xff0c;而不能使用Mutation。但是在Action中还是要通过触发Mutation的方式间接变更数据。 只有mutation中定义的函数&#xff0c;才有权利去修改state中的数据&#xff0c;因此actions最…

Vuex从入门到实战(五)——Getters加工处理公共数据

一、Getter Getter用于对Store中的数据进行加工处理形成新的数据。 Getter用于对Store中的数据进行加工处理形成新的数据&#xff0c;类似Vue的计算属性。Store中数据发生变化时&#xff0c;Getter中的数据也会随之变化。【getter不会修改store中的原数据&#xff0c;只是对其…