可以实现微信小程序父子组件实时通信的插件

news/2024/7/10 2:24:20 标签: vue, 小程序, js, 前端框架, 微信小程序

vue_0">小程序在组件化开发的时候可能没有达到vue那样的便捷,例如跨组件状态同步等。

这个插件可以:

在这里插入图片描述

开始

引入

在app.js中全局引入

// app.js
import Ani from './ani'

App({
  Ani:new Ani()
  
})

使用

页面中使用

const app = getApp()
Page({
	data:{
	
	},
	.....
})

将Page替换为app.Ani.Page

const app = getApp()
const index=app.Ani.Page({
  data: {
    otherHeight:0
  },
})

组件中使用

const app = getApp()
Component({
	properties:{
	
	},
	.....
})

Component替换为app.Ani.Component

const app=getApp()
const apps=app.Ani.Component({
  properties: {

  },

  watchStore:{

  }
})

内置功能

Store:

同步监听修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gTCJlTz5-1628429874942)(https://z3.ax1x.com/2021/08/07/fM46OI.gif)]

触发:通过 构造器.setStore(key,value) 将监听值加入Store

//apps为app.Ani.Component函数
apps.setStore(key,value)


例子:


const app=getApp()
const apps=app.Ani.Component({
  data: {
    val:0
  },
  methods: {
    setStore(){
      this.data.val++;
	  
	  修改store
      apps.setStore('monitor',this.data.val)
    }
  },
})

监听Store:

 watchStore: {
    'key'(news, old) {
        console.log(news,old)
    }
}

例子:

//页面
const app = getApp()
const index=app.Ani.Page({
  data: {
    otherHeight:0
  },

  // 监听器
  watchStore: {
    'monitor'(news, old) {
        this.setData({
            monitor: news
        })
    }
  },

})


//其他组件
//这个地方很捞 组件的watchStore中触发时没拿到this无法绑定 所以暂时只能通过外部定义this来使用其他方法
const app=getApp()
let that;
app.Ani.Component({
  data: {

  },
  ready(){
    that=this
  },

  watchStore:{
    'monitor'(news){
      that.setData({ monitor:news })
    }
  }
})

Router

跳转
wxml页面中直接跳转:


  <button 
  		事件:$toPath
        bindtap="$toPath" 
		
		跳转类型:data-to-type
        data-to-type="to" 
		
		跳转路径:data-path
        data-path="../item/item" 
		
		跳转参数:data-to-data
        data-to-data="{{hh}}" 
    >
        带参数跳转 
    </button>

$toPath:跳转事件名称
data-path:跳转路径
data-to-data:跳转参数
data-to-type:跳转类型
注:跳转类型同微信官方跳转方式,并支持简写

  • navigateTo:默认跳转方式;简写(to)
  • switchTab:简写(toTab)跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
  • reLaunch:简写(launch)关闭所有页面,打开到应用内的某个页面
  • redirectTo:简写(offTo)关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
  • navigateBack:简写(back)关闭当前页面,返回上一页面或多级页面。

js中的跳转事件:

this.$toPath({

     跳转路径:path
      path: '../item/item',
	  
	  跳转参数:toData
      toData: {a:30},
	  
	  跳转类型:toData
      toType: 'offTo'
    })

Scope

功能性作用域 在对应对象中书写函数 即可

节流
 throttle: {
        // 允许再次触发时间
        time:'1200',
		//函数
        dbClick() {
            console.log('throttle');
        },
    },

防抖
debounce: {
        // 允许再次触发时间
        time:'500',
		//函数
        debounce() {
            console.log('debounce');
        }
    },

执行一次
 once: {
 		//函数
        todoOnce() {
            console.log('once');
        }
    },

Storage

操作Storage 允许添加Storage的有效时间

添加Storage:

//添加一条有效时间为5秒的存储
this.$setStorage('key','value', 5)

获取Storage:

const key= this.$getStorage('key')

删除Storage:

this.$removeStorage('key')

Mixin

代码混入
注:mixin js中一样可以使用$toPath等功能
js中使用方法:

const app=getApp();
//引入js
import one from './one'
import two from './two '
....

const apps = app.Ani.Page({
    //加入到mixins数组中
    mixins:[one,two ],
	
    onLoad(options){
       
    }
})

one.js

export default{
	data:{

	},
    onReady(){
       	...
    },
	onShow(){
	    ...
	},
    showToast(){
      wx.showToast({
        title: '你好',
      })
    }
}

其他小功能贱Demo


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

相关文章

基于分布式文件系统 FastDFS,利用 Zuul 网关实现滑块验证登录

点击上方蓝色“架构荟萃”关注我们&#xff0c;输入1024&#xff0c;你懂的 需求分析 现在滑块验证码在许多网站逐步流行起来&#xff0c;比如今日头条搜新闻时会提示滑块验证。 一方面&#xff0c;滑块验证对用户体验来说&#xff0c;比较新颖&#xff0c;操作简单。另一方面其…

推一款基于原生的小程序(埋点)插件:ani-weapp

推一款基于原生的小程序插件&#xff1a;ani-weapp 真的可以提供太多方便 用最简单的方式实现跨组件实时通信&#xff0c;路由拦截&#xff0c;页面监听&#xff0c;storage管理&#xff0c;防抖节流区域化 最最最重要的一点&#xff1a; 引入真的简单&#xff01;&#xff…

华为改密码让等24小时_华为手机锁屏密码忘记了如何解决 华为手机锁屏密码忘记了解决方法【介绍】...

华为、荣耀很多款机型都配备了指纹识别模块&#xff0c;长期用指纹来解锁&#xff0c;恐怕锁屏密码都忘记了吧&#xff1f;那么要怎么才能不用双清、不用还原系统&#xff0c;不丢失任何数据的情况下修改锁屏密码呢&#xff1f;下面小编来教大家如何用华为云服务的手机找回功能…

记一次 base64 图片存储引发后端查询接口性能断崖式下降问题全程解析

点击上方蓝色“架构荟萃”关注我们&#xff0c;输入1024&#xff0c;你懂的 问题回顾 同事小赵接到客户导入新闻数据要求&#xff0c;由客户提供新闻数据。于是&#xff0c;小赵通过 SQL 脚本入库新闻数据后&#xff0c;发现前台展示新闻特别慢。幸好是晚上凌晨 1 点&#xff0…

小程序canvas多行文本绘制

简单封装了一个微信小程序端绘制多行文本的功能 该功能是基于小程序canvas2D api进行绘制 可以实现&#xff1a; 自动绘制多行文本多行文本上下&#xff0c;左右&#xff0c;居中对齐功能设置最大行数&#xff0c;超出显示省略号设置最大宽度&#xff0c;超出自动换行行间距…

启动模拟器要20多分钟_和平精英模拟器电脑版,画面卡死卡顿几秒且偶尔有电流声...

合理设置模拟器可以解决这些问题&#xff0c;还有一个问题就是网络或服务器不稳定引起&#xff0c;可以试试经过加速器启动模拟器&#xff0c;如果依然有卡顿问题&#xff0c;就要修改一下模拟器相关设置。1、引擎设置&#xff1a;勾选DX&#xff0c;启动渲染缓存等勾选&#x…

前端防止浏览器访问旧版 js 和 css 的优化思路

点击上方蓝色“架构荟萃”关注我们&#xff0c;输入1024&#xff0c;你懂的 前言 最近发版前端项目&#xff0c;用户经常反馈新添加功能在线上环境不好用&#xff0c;常出现新老页面并存的状况。 经前端同事排查发现&#xff0c;实际上只需要重新刷新一下页面就没事了。但是每次…

微信小程序canvas绘制插件

针对小程序新推出的canvas 2d api 简单封装了几个常用功能&#xff0c;用于应付日常海报快捷生成等用途。 <canvas id"myCanvas" type"2d"></canvas>创建canvas const myCanvasawait new AniCanvas(myCanvas)myCanvas输出参数&#xff1a; ca…