相关平台
微信小程序
小程序基础库: 2.27.3
使用框架: React
复现步骤
下面这段代码,在开发者工具里、大部分手机都是好的,特定的手机上查看才会报错。某报错机型:iPhone 13 Pro Max,微信版本v 8.0.30。
import Taro from '@tarojs/taro'
import { useState } from 'react'
import { View } from '@tarojs/components'
function Demo(props) {
const [flag, setFlag] = useState(false)
const onSign = () => {
// setFlag(true) 在这里执行不会报错
Taro.scanCode({
success: result => {
console.log('扫码成功!')
setFlag(true) // 在这里执行报错
},
fail: () => {}
})
}
return (
<View>
<View onClick={onSign}>点我签到</View>
<View>{flag ? '签到成功' : '未签到'}</View>
</View>
)
}
export default Demo
期望结果
setFlag(true) 执行成功,页面显示签到成功
实际结果
报错截图如下:
环境信息
👽 Taro v3.5.7
Taro CLI 3.5.7 environment info:
System:
OS: macOS 11.5.2
Shell: 5.8 - /bin/zsh
Binaries:
Node: 14.17.6 - /usr/local/bin/node
Yarn: 1.22.5 - ~/.yarn/bin/yarn
npm: 6.14.15 - /usr/local/bin/npm
npmPackages:
@tarojs/cli: 3.5.7 => 3.5.7
@tarojs/components: 3.5.7 => 3.5.7
@tarojs/helper: 3.5.7 => 3.5.7
@tarojs/plugin-framework-react: 3.5.7 => 3.5.7
@tarojs/plugin-platform-alipay: 3.5.7 => 3.5.7
@tarojs/plugin-platform-jd: 3.5.7 => 3.5.7
@tarojs/plugin-platform-qq: 3.5.7 => 3.5.7
@tarojs/plugin-platform-swan: 3.5.7 => 3.5.7
@tarojs/plugin-platform-tt: 3.5.7 => 3.5.7
@tarojs/plugin-platform-weapp: 3.5.7 => 3.5.7
@tarojs/react: 3.5.7 => 3.5.7
@tarojs/router: 3.5.7 => 3.5.7
@tarojs/runtime: 3.5.7 => 3.5.7
@tarojs/shared: 3.5.7 => 3.5.7
@tarojs/taro: 3.5.7 => 3.5.7
@tarojs/taro-h5: 3.5.7 => 3.5.7
@tarojs/webpack5-runner: 3.5.7 => 3.5.7
babel-preset-taro: 3.5.7 => 3.5.7
eslint-config-taro: ^3.5.7 => 3.5.7
react: ^18.0.0 => 18.2.0
taro-ui: ^3.1.0-beta.4 => 3.1.0-beta.4
3条答案
按热度按时间bqjvbblv1#
类似报错,如上图,一进入BasePage页面就报错,无法渲染页面,报错文件点进去以后定位在执行setState的地方,如图2。
部分机型会出现该问题,报错机型:iPhone 8P ,微信版本 8.0.7
neskvpey2#
@sweetyangtian 身边没有可以复现的机器,比较难定位。可以使用一个错误边界组件包裹
<Demo />
看看能不能发现具体报错是什么问题。也可以试试在Taro.nextTick
或setTimeout
里调用 setFlag 看能不能饶过。68bkxrlz3#
类似报错,如上图,一进入BasePage页面就报错,无法渲染页面,报错文件点进去以后定位在执行setState的地方,如图2。
部分机型会出现该问题,报错机型:iPhone 8P ,微信版本 8.0.7
React 组件渲染报错都会出现类似的问题,同样地可以使用错误边界试试能不能定位,如果还有问题可以新建一个 issue,并附上可复现的 demo。