从上图可以看到,进入页面同一个接口执行了两次【当然这个次数不是固定的,会出现三次也会出现一次】,检查了页面代码,只在onShow生命周期请求了一次接口!
测试实例1:搜索参数name=123,正常
http://localhost:10086/#/pages/goodsList/goodsList?name=123
测试实例2:搜索参数name=a,正常
http://localhost:10086/#/pages/goodsList/goodsList?name=a
测试实例3:搜索参数name=A,正常
http://localhost:10086/#/pages/goodsList/goodsList?name=A
测试实例4:搜索参数name=中,异常
http://localhost:10086/#/pages/goodsList/goodsList?name=中
通过测试,可以看到在参数是中文的时候,生命周期就会出现异常,执行多次!
Taro.navigateTo({
url: `pages/goodsList/goodsList?name=${encodeURI(name)}`
})
缺点:每一个存在中文的参数,都需要使用encodeURI,调用频繁!
function $route(opts){
let { type = 'navigateTo', url = ''} = opts;
url = encodeURI(url);
type = types[type] ? type : 'navigateTo';
Taro[type].call(Taro, { url });
}