We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
问题描述 在将微信转换TARO,同时将TARO转换为快应用时,出现了错误提示:Error: 在回调函数使用从 props 传递的函数时,请把回调函数改造为箭头函数并一直使用 this 取值
this
复现步骤
`> 155 | success: function(res) { | ^^^^^^^^^^^^^^^^
156 | if (res.data.res == 0) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 157 | if (res.data.data.content_list == null) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 158 | var tempTime = | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 159 | util.formatYear(new Date()) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 160 | '-' + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 161 | util.formatMonth(new Date()) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 162 | '-' + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 163 | (util.formatDay(new Date()) - 1) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 164 | that.onShow(tempTime) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 165 | var temp = tempTime.split('-') | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 166 | that.setData({ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 167 | selectDate: tempTime, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 168 | Year: temp[0], | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 169 | Month: temp[1], | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 170 | Day: temp[2] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 171 | }) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 172 | } else { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 173 | console.log(res.data.data) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 174 | for (var i = 0; i < res.data.data.content_list.length; i++) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 175 | if (res.data.data.content_list[i].category == 6) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 176 | res.data.data.content_list.splice(i, 1) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 177 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 178 | if ( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 179 | res.data.data.content_list[i].category == 2 && | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 180 | res.data.data.content_list[i].serial_id > 0 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 181 | ) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 182 | if (res.data.data.content_list[i].serial_list != '') { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 183 | Taro.setStorage({ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 184 | key: res.data.data.content_list[i].serial_id, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 185 | data: res.data.data.content_list[i].serial_list | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 186 | }) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 187 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 188 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 189 | if (i > 0) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 190 | if (res.data.data.content_list[i].author != '') { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 191 | var temp = res.data.data.content_list[i].author.user_name | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 192 | temp = temp.split(' ') | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 193 | if (temp.length > 1) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 194 | res.data.data.content_list[i].author.user_name = | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 195 | temp[0] + temp[1] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 196 | } else { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 197 | res.data.data.content_list[i].author.user_name = temp[0] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 198 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 199 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 200 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 201 | var sub_title = res.data.data.content_list[i].subtitle | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 202 | if (sub_title != '') { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 203 | var tmp_title = sub_title.split(':') | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 204 | res.data.data.content_list[i].subtitle = tmp_title[1] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 205 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 206 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 207 | if ( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 208 | res.data.data.weather.date == util.formatTimeYms(new Date()) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 209 | ) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 210 | var dates = '今天', | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 211 | storeDate = util.formatTimeYms(new Date()) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 212 | } else { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 213 | var tmp = res.data.data.weather.date.split('-'), | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 214 | dates = tmp[1].slice(1, 2) + '月' + tmp[2].slice(1, 2) + '日', | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 215 | storeDate = res.data.data.weather.date | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 216 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 217 | that.setData({ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 218 | content: res.data.data.content_list, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 219 | weather: res.data.data.weather, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 220 | menu: res.data.data.menu, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 221 | date: dates | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 222 | }) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 223 | Taro.setStorageSync(storeDate, res.data) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 224 | Taro.setStorageSync('currentDate', storeDate) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 225 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 226 | setTimeout(function() { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 227 | Taro.hideLoading() | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 228 | }, 1000) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 229 | } else { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 230 | Taro.showToast({ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 231 | title: '数据加载失败', | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 232 | icon: 'false', | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 233 | duration: 2000 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 234 | }) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 235 | } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 236 | } | ^^^^^^^^^ 237 | }) 238 | } 239 | }, at Object.codeFrameError (D:\mywork\taro\packages\taro-transformer-wx\lib\src\utils.js:380:12) at CallExpression (D:\mywork\taro\packages\taro-transformer-wx\lib\src\index.js:309:43) at NodePath._call (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\path\context.js:76:18) at NodePath.call (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\path\context.js:48:17) at NodePath.visit (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\path\context.js:105:12) at TraversalContext.visitQueue (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\context.js:150:16) at TraversalContext.visitSingle (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\context.js:108:19) at TraversalContext.visit (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\context.js:192:19) at Function.traverse.node (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\index.js:114:17) at NodePath.visit (D:\mywork\taro\packages\taro-transformer-wx\node_modules\babel-traverse\lib\path\context.js:115:19)`
期望行为 转换正常
报错信息
报错如下:
系统信息
补充信息
解决思路:看起来是父子类传值时,回调函数中this作用域不同造成的,应该是TARO的转换规则要求,是否应该在微信转TARO时,就直接转换为箭头函数?
The text was updated successfully, but these errors were encountered:
欢迎提交 Issue~
如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏
如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。
Good luck and happy coding~
Sorry, something went wrong.
@luckyadam 深入跟踪了一下,现在的处理方式会直接抛出异常,对于回调函数 ,在babel解析语法时 产生的虚拟语法树中,可以查询到函数类型,会标明是回调类型,但函数中的变量也需要同步切换为this. 调用,不知道是否 是因为没有统一规则 导致难度比较大,暂未实现? 但对于回调的处理 可以直接把函数 处理成 带=> 格式,是否需要做呢? 只解决了一半的问题。
luckyadam
No branches or pull requests
问题描述
在将微信转换TARO,同时将TARO转换为快应用时,出现了错误提示:Error: 在回调函数使用从 props 传递的函数时,请把回调函数改造为箭头函数并一直使用
this
取值复现步骤
`> 155 | success: function(res) {
| ^^^^^^^^^^^^^^^^
期望行为
转换正常
报错信息
报错如下:
系统信息
补充信息
解决思路:看起来是父子类传值时,回调函数中this作用域不同造成的,应该是TARO的转换规则要求,是否应该在微信转TARO时,就直接转换为箭头函数?
The text was updated successfully, but these errors were encountered: