Vuex的学习

Vuex的学习

1.Vuex概述

1.1 组件之间共享数据的方式

父向子传值:v-bind属性绑定(语法糖:)
子向父传值:v-on事件绑定(语法糖@)
兄弟组件之间共享数据:EventBus

  • $on 数据接收方
  • $emit 数据发送方

1.2 Vuex是什么

Vuex是实现组件全局状态(数据)管理的一种机制,可以方便实现组件之间的数据共享。

2. Vuex的基本使用

2.1 安装Vuex

  1. 安装Vuex依赖包
npm install vuex --save
  1. 导入Vuex包
import Vuex from 'vuex'
Vue.use(Vuex)
  1. 创建store对象
const store = new Vuex.Store({
	// state中存放的就是全局共享的数据
	state: {
		count:0
	}
})
  1. 将store对象挂载到Vue实例中
import Vue from 'vue'
import App from './App'
import router from './router'
// 这里的store的s要小写
import store from './store'

Vue.config.productionTip = false

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})

这样,所有的组件就可以直接从store中获取全局的数据了。

3. Vuex的核心概念

3.1 核心概念描述

Vuex中的主要核心概念如下:

  • State
  • Mutation
  • Action
  • Getter

3.2 State

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

组件中访问State中数据的方式:

  1. this.$store.state.全局数据名称
<template>
  <div class="add">
    <!-- 这里this可以省略 -->
    <h2>当前数值为:{{ $store.state.count }}</h2>
    <button>+</button>
  </div>
</template>

<script>
export default {
  name: "Addition",
  data() {
    return {};
  },
};
</script>

<style scoped>
</style>
  1. 使用mapState函数
// 1. 从Vuex中导入mapState函数
import { mapState } from 'vuex'

// 2. 将当前组件需要的全局数据映射为当前组件的计算属性 
computed:{
	...mapState(['count'])
}
<template>
  <div class="sub">
    <h2>当前数值为:{{count}}</h2>
    <button>-</button>
  </div>
</template>

<script>
import { mapState } from "vuex";

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

<style scoped>
</style>

3.3 Mutation

Mutation用于变更Store中的数据

  1. 只能通过Mutation变更Store数据,不可以直接操作Store中的数据
  2. 便于集中监控所有全局数据的变化

注:不要再Mutations.js中写异步代码, 如果需要异步代码,到Actions中写

定义Muattion

const store = new Vuex.Store({
	// state中存放的就是全局共享的数据
	state: {
		count:0
	},
	mutations:{
		add(state){
			// 变更数据
			state.count += 1
		}
	}
})

使用Mutation的方式

  1. this.$store.commit(‘mutations中定义的方法’)
methods:{
	handle(){
		// 触发mutations的第一种方式
		this.$store.commit('add')
	}
}

使用Mutation传递参数

mutations:{
	addN(state, step) {
		state.count += step
	}
}
methods:{
	handle(){
		// 触发mutations时携带参数
		this.$store.commit('addN', 3)
	}
}
  1. 使用mapMuattions函数
// 1. 从vuex中导入mapMutations函数
import { mapMutations } from 'vuex'

// 2. 将指定的mutations函数映射为当前组件的methods函数
methods:{
	...mapMutations(['add', 'addN'])
}
// 减法组件中<templte>中的代码
<template>
  <div class="sub">
    <h2>当前数值为:{{ count }}</h2>
    <button @click="sub">-</button>
    <button @click="subN(3)">-N</button>
  </div>
</template>

// 减法组件中<script>中的代码
methods: {
	// ...mapMutations写到methods中
    ...mapMutations(["sub", "subN"])
  },

// mutations.js中的代码
sub(state) {
	state.count -= 1
},
subN(state, step) {
	state.count -= step
}

3.4 Action

Action用于处理异步任务

// 定义Action
actions:{
	addAsync(context){
		setTimeout(() => {
			// 在actions中不能直接修改state中的数据
			// 必须通过调用mutations中的方法才能修改
			context.commit('add')
		}, 1000)
	}
}

触发Action的方式

  1. this.$store.dispatch(‘在actions中定义的函数名’)
// 使用Action
methods(){
	handle(){
		this.$store.dispatch('addAsync')
	}
}

触发actions异步任务时携带参数

actions:{
	addNAsync(context, step){
		setTimeout(() => {
			// 在actions中不能直接修改state中的数据
			// 必须通过调用mutations中的方法才能修改
			context.commit('addN', step)
		}, 1000)
	}
}

methods(){
	handle(){
		this.$store.dispatch('addNAsync', 3)
	}
}
  1. 使用mapActions函数
// 导入mapActions函数
import { mapActions } from 'vuex'

// 将指定的actions函数映射为当前组件的methods函数
methods:{
	...mapActions(['addAsync', 'addNAsync'])
}

3.5 Getter

Getter 用于对Store中的数据进行加工处理形成新的数据

  1. 类似于计算属性
  2. Store中的数据变化,Getter的数据也会变化
getters:{
	showNum: state => {
		return '当前最新的数量是:' + state.count
	}
}

使用getters的方式:

  1. this.$store.getters.‘getters中定义的函数名’
<template>
  <div class="add">
    <!-- 这里this可以省略 -->
    <!-- <h2>当前数值为:{{ $store.state.count }}</h2> -->
    <h2>{{$store.getters.showNum}}</h2>
    <button @click="handle">+</button>
    <button @click="handle2">+N</button>
  </div>
</template>
  1. 使用mapGetters函数
// 导入mapGetters函数
import { mapGetters} from 'vuex'

// 将指定的getters函数映射为当前组件的计算属性
computed:{
	...mapActions(['addAsync', 'addNAsync'])
}

Read more

60个“特征工程”计算函数(Python代码)

60个“特征工程”计算函数(Python代码)

转自:coggle数据科学 近期一些朋友询问我关于如何做特征工程的问题,有没有什么适合初学者的有效操作。 特征工程的问题往往需要具体问题具体分析,当然也有一些暴力的策略,可以在竞赛初赛前期可以带来较大提升,而很多竞赛往往依赖这些信息就可以拿到非常好的效果,剩余的则需要结合业务逻辑以及很多其他的技巧,此处我们将平时用得最多的聚合操作罗列在下方。 最近刚好看到一篇文章汇总了非常多的聚合函数,就摘录在下方,供许多初入竞赛的朋友参考。 聚合特征汇总 pandas自带的聚合函数 * 其它重要聚合函数 其它重要聚合函数&分类分别如下。 def median(x):     return np.median(x) def variation_coefficient(x):     mean = np.mean(x)     if mean != 0:         return np.std(x) / mean     else:         return np.nan def variance(x):     return

By Ne0inhk
90w,确实可以封神了!

90w,确实可以封神了!

要说24年一定最热的技术,还得是AIGC! 前段时间阿里旗下的开源项目,登上GitHub热榜! AI大热,如今ChatGPT的优异表现,必然会出现各种细分场景应用的工具软件,和大量岗位项目! 山雨欲来风满楼,强人工智能的出现,所有科技公司已经开始巨量扩招此领域的人才。算法的岗位,近三个月已经增长68%!这件事在HR届也是相当震撼的。 目前各行各业都不景气的市场,人工智能岗位却一直保持常青!甚至同属AI边缘岗都比其他岗薪资高40%! 与此同时,AI算法岗上岸也不简单,竞争激烈,好公司核心岗位不用说,谁都想去。 所以事实就是,想要上岸,门槛也逐渐变高,项目经历、实习经历都很重要,越早明白这个道理就越能提前建立起自己的优势。 但我在b站逛知识区的时候,经常看到有些同学,因为一些客观原因导致无法参加实习,这种情况下,如果你想提升背景,增加项目经历的话,可以试试这个《CV/NLP 算法工程师培养计划》。 目前已经有上千位同学通过该计划拿到offer了,最新一期学员就业薪资最高能拿到78K!年薪94w! 优势就是有BAT大厂讲师带领,手把手带做AI真实企业项目(包含CV、NLP等

By Ne0inhk
再见nohup!试试这个神器,Python Supervisor!

再见nohup!试试这个神器,Python Supervisor!

👇我的小册 45章教程:() ,原价299,限时特价2杯咖啡,满100人涨10元。 作者丨Ais137 https://juejin.cn/post/7354406980784373798 1. 概述 Supervisor 是一个 C/S 架构的进程监控与管理工具,本文主要介绍其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题。 2. 问题场景 在实际的工作中,往往会有部署持久化进程的需求,比如接口服务进程,又或者是消费者进程等。这类进程通常是作为后台进程持久化运行的。 一般的部署方法是通过 nohup cmd & 命令来部署。但是这种方式有个弊端是在某些情况下无法保证目标进程的稳定性运行,有的时候 nohup 运行的后台任务会因为未知原因中断,从而导致服务或者消费中断,进而影响项目的正常运行。 为了解决上述问题,通过引入 Supervisor 来部署持久化进程,提高系统运行的稳定性。 3. Supervisor 简介 Supervisor is a client/

By Ne0inhk
第一本给程序员看的AI Agent图书上市了!

第一本给程序员看的AI Agent图书上市了!

AI Agent火爆到什么程度? OpenAI创始人奥特曼预测,未来各行各业,每一个人都可以拥有一个AI Agent;比尔·盖茨在2023年层预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业;吴恩达教授在AI Ascent 2024演讲中高赞:AI Agent是一个令人兴奋的趋势,所有从事AI开发的人都应该关注。而国内的各科技巨头也纷纷布局AI Agent平台,如:钉钉的AI PaaS、百度智能云千帆大模型平台等等。 Agent 是未来最重要的智能化工具。对于程序员来说,是时候将目光转向大模型的应用开发了,率先抢占AI的下一个风口AI Agent。 小异带来一本新书《大模型应用开发 动手做 AI Agent》,这本书由《GPT图解》的作者黄佳老师创作,从0到1手把手教你做AI Agent。现在下单享受5折特惠! ▼点击下方,即可5折起购书 有这样一本秘籍在手,程序员们这下放心了吧,让我们先来揭开 Agent 的神秘面纱。 AI Agent 面面观

By Ne0inhk