Skip to content

kallsave/wx-miniapp-watch

Repository files navigation

wx-miniapp-watch

功能

给微信小程序带来

  • 1.vue体验的watch语法(immediate, deep),给App,Page,Component函数增加watch的功能
  • 2.全局状态管理globalWatch,给App,Page,Component函数增加监听app.globalData的globalWatch的扩展功能

安装

npm install wx-miniapp-watch --save

使用

在微信开发者工具中先构建npm生成miniprogram_npm文件夹

// app.js
// 导入js给App,Page,Component增加watch,globalWatch的扩展
import './miniprogram_npm/wx-miniapp-watch/index'
// app.js
App({
  globalData: {
    test: 0,
    hasLogin: false
  },
  data: {
    count: 1
  },
  // 能监听在app.globalData申明的变量
  globalWatch: {
     // 监听app.globalData.test的变化
    test: {
      handler(newVal, oldVal) {
        console.log(newVal, oldVal)
      },
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    }
  },
  // 能监听在data申明的变量
  watch: {
    // 监听data.count的变化
    count: {
      handler(newVal, oldVal) {
        console.log(newVal, oldVal)
      }
    }
  },
  onShow() {
    this.$watch('count', (newVal, oldVal) => {
      console.log(newVal, oldVal)
    }, {
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    })

    this.$globalWatch('hasLogin', (newVal, oldVal) => {
      console.log(newVal, oldVal)
    }, {
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    })
  }
})
// page.js
Page({
  data: {
    bar: 0,
    count: 0,
  },
  // 能监听在app.globalData申明的变量
  globalWatch: {
    // 监听app.globalData.test的变化
    test: {
      handler(newVal, oldVal) {
        console.log(newVal, oldVal)
      },
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    }
  },
  // 能监听在data申明的变量
  watch: {
    // 监听data.bar的变化
    bar: {
      handler(newVal) {
        console.log(newVal)
      },
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    },
    count: 'countChangeHandler'
  },
  onShow() {
    this.$watch('count', (newVal, oldVal) => {
      console.log(newVal, oldVal)
    }, {
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    })

    this.$globalWatch('hasLogin', (newVal, oldVal) => {
      console.log(newVal, oldVal)
    }, {
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    })
  },
  countChangeHandler() {
    console.log(this.data.count)
  }
})
// component.js
Component({
  data: {
    foo: 0,
    count: 0
  },
  ready() {
    this.data.foo = 1
  },
  // 监听app.globalData.test的变化
  globalWatch: {
    test: {
      handler(newVal, oldVal) {
        console.log(newVal, oldVal)
      },
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
    }
  },
  // 能监听在properties, data申明的变量
  watch: {
    // 监听data.foo的变化
    foo: {
      handler(newVal) {
        console.log(newVal)
      },
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    },
    count: 'countChangeHandler'
  },
  onShow() {
    this.$watch('count', (newVal, oldVal) => {
      console.log(newVal, oldVal)
    }, {
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    })

    this.$globalWatch('hasLogin', (newVal, oldVal) => {
      console.log(newVal, oldVal)
    }, {
      // 第一次立刻执行
      immediate: true,
      // 是否是同步,默认异步
      sync: true,
      // 深度监听
      deep: true,
    })
  }
  methods: {
    countChangeHandler() {
      console.log(this.data.count)
    }
  }
})

About

给微信小程序App,Page,Component添加watch的扩展,vue一样的体验,提供globalWatch的扩展监听全局状态

Resources

License

Stars

Watchers

Forks

Packages

No packages published