首页 > 语言 > JavaScript > 正文

vue-rx的初步使用教程

2024-05-06 15:29:36
字体:
来源:转载
供稿:网友

一、各文档介绍

1、rxjs官网

2、vue-rxjs地址

二、环境搭建

1、使用vue-cli构建一个项目

2、安装vue-rx的依赖包

yarn add rxjsyarn add rxjs-compatyarn add vue-rx

3、在src/main.js中配置使用rxjs

// 使用vueRximport VueRx from 'vue-rx';import Rx from 'rxjs/Rx'Vue.use(VueRx, Rx);

三、没有使用vue-rx的时候

1、关于属性的使用

import { Observable } from 'rxjs';export default { data() {  return {   name: new Observable.of('张三')  } }};

2、关于事件的使用

import { Observable } from 'rxjs';export default { data() {  return {   name: new Observable.of('张三'),  } }, mounted () {  new Observable.fromEvent(this.$refs.btn, 'click').subscribe(e => {   this.name = '哈哈';  }) }};

四、结合vue-rx的使用

1、项目中集成了vue-rx的时候会在vue中新增一个钩子函数subscriptions,和之前的data类似的使用

2、domStreams是一个数组用来存放事件

3、属性的使用

export default { name: 'HelloWorld', data () {  return {   msg: 'Welcome to Your Vue.js App'  } }, domStreams: ['setName$', 'resetMsg$'], subscriptions() {  return {   // 发送一个普通的值   name: new Observable.of('张三'),   // 发送一个修改的值   age$ : Observable.of(20).map(item => item + 10),   // 定义发送一个数组   arr$: new Observable.of(['第一本书', '第二本书']),   // 发送一个数组   obj$: new Observable.of({     a: 'test-obj',    name: '呵呵'    }),   // 发送一个promise函数   promise$: new Observable.fromPromise(this.getPromise()),   // 定时器   interval$: new Observable.interval(1000)  } }, methods: {  getPromise() {   return new Promise((resolve, reject) => {    setTimeout(() => {     resolve('promise');    }, 1000)   })  } },}

5、事件的使用

1.在视图中定义事件

<button v-stream:click="setName$">点击按钮设置值</button>

2.在domStreams中定义

domStreams: ['setName$'],

3、在subscriptions定义事件赋值给哪个变量

name$: this.setName$.map(e => 'hello'.toUpperCase()),

六、关于switchMap、concatMap、exhaustMap的使用

1、定义事件

<button class="btn" v-stream:click="getConcatMapCount$">点击获取concatMapCount$</button><p>{{concatMapCount$}}</p><button class="btn" v-stream:click="getSwitchMapCount$">点击获取switchMapCount$</button><p>{{switchMapCount$}}</p><button class="btn" v-stream:click="getExhaustMapCount$">点击获取exhaustMapCount$</button><p>{{exhaustMapCount$}}</p>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选