如何在函数内部从本机使用setTimeout?

时间:2019-04-17 09:56:13

标签: react-native expo

我想使用“ setTimeout”来响应本机应用程序,但是我不知道为什么会出现类似setTimeout的错误不是函数。

当然,我从react-native导入了setTimeout。

这是我的下面的代码

import { setTimeout } from 'react-native';

handleBarCodeScanned = ({ data }) => 
if (data !== this.state.lastScannedUrl) {
  this.setState({ lastScannedUrl: data });
  setTimeout(() => {this.checkQrUrl(data);}, 2000 )
} else if (data === this.state.lastScannedUrl) {
  return;
}

}

checkQrUrl(data) {
if (data === this.state.UniqueQrUrl) {
  this.props.onPress();
  // Alert.alert(`このQR(${data})は、登録されているQR(${this.state.UniqueQrUrl})と同じです`);
} else if (data !== this.state.UniqueQrUrl) {
  Alert.alert('QRコードが違います');
} else {
  Alert.alert('予期せぬ障害が発生しました。前画面に戻って再度お試しください');
}

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

setTimeout是JavaScript的默认功能,例如alert,您无需从react-native显式导入它。

删除该导入,它将正常工作。

答案 1 :(得分:0)

从您的代码中删除以下导入内容:

//    import { setTimeout } from 'react-native';


    handleBarCodeScanned = ({ data }) => 
    if (data !== this.state.lastScannedUrl) {
      this.setState({ lastScannedUrl: data });
      setTimeout(() => {this.checkQrUrl(data);}, 2000 )
    } else if (data === this.state.lastScannedUrl) {
      return;
    }
    }

    checkQrUrl(data) {
    if (data === this.state.UniqueQrUrl) {
      this.props.onPress();
      // Alert.alert(`このQR(${data})は、登録されているQR(${this.state.UniqueQrUrl})と同じです`);
    } else if (data !== this.state.UniqueQrUrl) {
      Alert.alert('QRコードが違います');
    } else {
      Alert.alert('予期せぬ障害が発生しました。前画面に戻って再度お試しください');
    }

setTimeout是JavaScript的函数,它不是react-native组件。因此,如果您尝试从react-native导入,则会收到错误消息。