IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 一文掌握Vue组件的通信方法(下) -> 正文阅读

[JavaScript知识库]一文掌握Vue组件的通信方法(下)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


Vue组件中的六种通信方式(下)

四、消息订阅和发布(pubsub)

原理:需要接收数据的组件订阅消息,提供数据的发布消息

  • 作用:一种组件之间的通信方式,适合于任意组件间通信
  • 使用步骤:
    • 1.安装pubsub: npm i pubsub-js
    • 2.在需要使用的组件中引入 import pubsub from “pubsub-js”
    • 3.接收数据:A组件想接收数据,则在A组件中订阅消息,订阅的回调留在A组件自身
    • methods(){
        demo(data){......}
      }
      ......
      mounted() {
        this.pid = pubsub.subscribe('handler',this.demo) //订阅一个叫handler的消息
      }
      
    • 4.提供数据:pubsub.publish(‘handler’,数据)
    • 5.最好在beforeDestroy钩子中,用PubSub.unsubscribe(pid)去取消订阅。

五.vue3中provide和reject

使用场景:祖与后代组件间通信

  • 使用套路:父组件有一个provide提供数据,后代组件中只需要inject中接收对应数据
  • 具体写法
    1.父组件中:
    setup(){
    .....
    let car = recative({name:"奔驰",price:"40w"})
    provide("car",car)
    ....
    return {
    car
    }
    

}
2.子组件中

setup(){
  ....
  let car = inject("car")
  ....
  return{
    car
  }
}

六.Vuex

环境配置

  • 下载vuex npm i vuex
  • 在创建名为store的文件夹,在其下创建一个index.js文件
// 在store 下的 index.js文件中
// 导入vuex 和vue
import vue from "vue"
import Vuex from "vuex"
// vuex是个插件必须全局使用 要用到Vue.use
Vue.use(Vuex)

// 配置actions,mutations,state三个配置对象
const actions = {}
const mutations ={}
const state = {}
export default {}
  • 脚手架的入口文件main.js中导入
//在main.js中    然后导入配置store配置项既可以了
import vue from "vue"
import store from "./store/index.js"
new Vue({
  render:h=>h("#app")
  store
}).$mount("#app")

简单使用

// 在store 下的 index.js文件中
// 导入vuex 和vue
import vue from "vue"
import Vuex from "vuex"
// vuex是个插件必须全局使用 要用到Vue.use
Vue.use(Vuex)

// 配置actions,mutations,state三个配置对象
const actions = {
  // 响应组件的handler1事件 然后提交给mutations配置对象
  // value 是组件传过来的数据
  handler1(context,value){
    context.commit("handler2",value)
  }
}
const mutations ={
   // 整正处理组件传入数据的配置对象就是mutations
  handler2(state,value){
  	// 此处参数接收的state就是定义的state配置对象
    state.sum +=value
  }
}
const state = {
  sum :0
}
export default {
  actions,
  mutations,
  state
}

如何在组件中触发

// 组件中如何触发
<button @click="addSum">点击sum++</button>
 methods:{
   addSum(){
     // 通过dispatch会发送给actions配置对象
     // actions里面对数据做处理后 提交给mutations对象
     this.$store.dispatch("handler1",1)
     // 如果确定发送的数据就是此时的数据,也可以避免actions对象直接使用commit提交给mutations对象
     this.$store.commit("hander2",1)
   }
}

注意点:组件中读取vuex中的数据:$store.state.sum

组件中修改vuex中的数据:$store.dispatch(‘action中的方法名’,数据) 或 $store.commit(‘mutations中的方法名’,数据)

备注:若没有网络请求或其他业务逻辑,组件中也可以越过actions,也就是不写dispatch,直接编写commit[

vuex详细使用请参照下文!!!

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:23:04  更:2021-10-23 12:24:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:36:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码