乐趣区

wepy2x那些坑

1、wepy 中不能使用原生的 input 组件

当开发中需要使用 radio 或者 checkbox 时,通常设置 input 的 type 类型为 radio 或者 checkbox,但是经过编译后统统会变成 text 类型,wepy 不支持这种用法。我们可以直接使用小程序自带的 checkbox 组件来代替。

2、wepy2.x 中拦截器使用方式与 wepy1.x 不同,本人使用 fly.js 代替

wepy1.x 拦截器用法:

import wepy from 'wepy';
export default class extends wepy.app {constructor () {// this is not allowed before super()
        super();
        // 拦截 request 请求
        this.intercept('request', {
            // 发出请求时的回调函数
            config (p) {
                // 对所有 request 请求中的 OBJECT 参数对象统一附加时间戳属性
                p.timestamp = +new Date();
                console.log('config request:', p);
                // 必须返回 OBJECT 参数对象,否则无法发送请求到服务端
                return p;
            },
            // 请求成功后的回调函数
            success (p) {
                // 可以在这里对收到的响应数据对象进行加工处理
                console.log('request success:', p);
                // 必须返回响应数据对象,否则后续无法对响应数据进行处理
                return p;
            },
            // 请求失败后的回调函数
            fail (p) {console.log('request fail:', p);
                // 必须返回响应数据对象,否则后续无法对响应数据进行处理
                return p;
            },
            // 请求完成时的回调函数 (请求成功或失败都会被执行)
            complete (p) {console.log('request complete:', p);
            }
        });
    }
}

本人寻思良久,没有发现 wepy2.x 使用拦截器的案例,所以“曲线救国”使用 fly.js 来代替。

// 添加请求拦截器
fly.interceptors.request.use((request)=>{
    // 给所有请求添加自定义 header
    request.headers["X-Tag"]="flyio";
      // 打印出请求体
      console.log(request.body)
      // 终止请求
      //var err=new Error("xxx")
      //err.request=request
      //return Promise.reject(new Error(""))
  
    // 可以显式返回 request, 也可以不返回,没有返回值时拦截器中默认返回 request
    return request;
})

// 添加响应拦截器,响应拦截器会在 then/catch 处理之前执行
fly.interceptors.response.use((response) => {
        // 只将请求结果的 data 字段返回
        return response.data
    },
    (err) => {
        // 发生网络错误后会走到这里
        //return Promise.resolve("ssss")
    }
)

详情参考:https://github.com/wendux/fly#

退出移动版