# 小程序状态库 **Repository Path**: Rick_0/applet-state-library ## Basic Information - **Project Name**: 小程序状态库 - **Description**: 这是一个适用于原生微信小程序的公共状态库,让你可以轻松的使用到多页面状态数据管理,无需复杂的api,还提供了基于发布订阅模式的 监听事件API - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-09-14 - **Last Updated**: 2021-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 文档 ```javascript // 1. 新建个 store.js 内容如下 /*import { createStore } from './store-core'; export const store = new createStore({ state: { // 这里是仓库值 author:'rick', arr:[] }, dev:false,//打开会有自动 错误提示 global:false, //是否开启自动全局注入state, 开启全局后页面多了会影响性能,二十个页面内性能正常 mutations: {// 这里参考vuex changeAuthor(state){ state.author = 'nancy'; }, s(state,val){ state.arr = val } } })*/ // 2. 在app.js 中引入 store.js /* import { store } from './store' App({ store, data: {} }) */ //3. 在每个页面 this.data.$store 即可访问到仓库的东西, // global关闭状态 =====>>> 页面按需引入 要声明 useStore:['仓库成员变量名','仓库成员变量名'] // 全部变量注入 只要声明 useStore:true // !!!!!!!! global=false 情况下不声明useStore,将获取不到仓库值 //global开启状态 ======>>>> // 自动每个页面可以访问到, 如按需加载可参考上面 //4. 如何修改仓库值 , getApp().store.$commit("muataion事件名",值); //额外功能: 仓库提供监听功能 // 1.使用 : $listen("事件名",(params)=>{}) 事件名任意,触发的时候按事件名进行触发 params来自$emit传的第二个参数 // $listen 函数会返回一个 listenId 标记此次监听的id,在解绑监听事用, // 多个页面可以同时监听同一个事件, 同页面无法同时监听一个事件 // 注: 事件名 由你自己定, 大概理念请参考组件传值的监听事件, 钱 // 2.触发: $emit("事件名",这里可传参) // 会触发 $listen()监听过的事件,事件名来区分 // 3.解绑: $offListen("事件名",listenId) // 如有传 listenId 只会解绑一个监听 // 如果没传会对 事件名下 所有回调,接触绑定 //例如 // 个人中心页: let listenId= store.$listen('login',(msg)=>{ msg:登录了 //监听到登录了,这里开始获取用户信息 }) // 取消监听 : store.$offListen("login",listenId) ; // 这里取消监个人中心,不影响详情页的 // 同名,不同页面可同时一起监听 // 详情页 : let listenId= store.$listen('login',(msg)=>{ msg:登录了 //这里也监听到登录了, }) //登录页: store.$emit('login','登录了') //这里触发监听 ```