wujingjing
2024-08-01 1ee0bcc741206079b645c584c578ee543ff75c35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// 在使用 toast 方法时,可以传入参数,也可以不传入参数
// 如果需要传入参数,要传入对象作为参数
// const toast = (options = {}) => {}
 
/**
 * @description 消息提示框
 * @param { Object } options 参数和 wx.showToast 参数保持一致
 */
const toast = ({ title = '数据加载中...', icon = 'none', duration = 2000, mask = true } = {}) => {
  // 如果用户传入了对象作为参数
  // 在形参位置通过解构的方式获取用户传入的参数,同时设置默认值
 
  wx.showToast({
    title,
    icon,
    duration,
    mask
  })
}
 
/**
 * @description 模态对话框
 * @param { Object } options 参数和 wx.showModal 参数保持一致
 */
const modal = (options = {}) => {
  // 在调用 modal 方法时,可以传递参数,也可以不传递参数
  // 如果不传递参数,默认值就是空对象
  // 如果传递参数,参数需要时一个对象,对象中的属性需要和 wx.showModal 参数保持一致
 
  // 在方法内部需要通过 Promise 返回用户的操作
  // 如果用户点击了确定,需要通过 resolve 返回 true
  // 如果用户点击了取消,需要通过 resolve 返回 false
  return new Promise((resolve) => {
    // 默认的参数
    const defaultOpt = {
      title: '提示',
      content: '您确定执行该操作吗?',
      confirmColor: '#f3514f'
    }
 
    // 通过 Object.assign 方法将参数进行合并
    // 需要使用传入的参数覆盖默认的参数
    // 为了不影响默认的参数,需要将合并以后的参数赋值给一个空对象
    const opts = Object.assign({}, defaultOpt, options)
 
    wx.showModal({
      // 将合并以后的参数通过展开运算符赋值给 wx.showModal 对象
      ...opts,
      complete({ confirm, cancel }) {
        confirm && resolve(true)
        cancel && resolve(false)
      }
    })
  })
}
 
// 如果有很多 .js 文件,都需要调用 toast 方法
// 每次使用都需要导入 toast,然后进行调用,太麻烦
// 可以将 toast 方法挂载到 wx 全局对象身上
// 如果想挂载到 wx 全局对象上这种写法生效,需要让当前文件执行一次
wx.toast = toast
wx.modal = modal
 
// 如果其他 .js 文件,需要使用 toast 方法
// 需要先导入 toast ,然后进行调用才可以
export { toast, modal }