Taro.scanCode成功后执行setState报错

x9ybnkn6  于 2023-02-04  发布在  其他
关注(0)|答案(3)|浏览(228)

相关平台

微信小程序

小程序基础库: 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
bqjvbblv

bqjvbblv1#

类似报错,如上图,一进入BasePage页面就报错,无法渲染页面,报错文件点进去以后定位在执行setState的地方,如图2。

部分机型会出现该问题,报错机型:iPhone 8P ,微信版本 8.0.7

neskvpey

neskvpey2#

@sweetyangtian 身边没有可以复现的机器,比较难定位。可以使用一个错误边界组件包裹 <Demo /> 看看能不能发现具体报错是什么问题。也可以试试在 Taro.nextTicksetTimeout 里调用 setFlag 看能不能饶过。

68bkxrlz

68bkxrlz3#

类似报错,如上图,一进入BasePage页面就报错,无法渲染页面,报错文件点进去以后定位在执行setState的地方,如图2。

部分机型会出现该问题,报错机型:iPhone 8P ,微信版本 8.0.7

React 组件渲染报错都会出现类似的问题,同样地可以使用错误边界试试能不能定位,如果还有问题可以新建一个 issue,并附上可复现的 demo。

相关问题