React-native QR码扫描仪抛出错误

时间:2019-01-03 12:53:58

标签: react-native react-native-ios

我有一个react-native应用程序,其中我使用react-native-qrcode-scanner开发了扫描仪功能。但是,当我尝试扫描数据时,出现以下错误-

error: can't find variable navigation

我在授权行的onSuccess方法中看到此错误。 我的代码-

import React, { Component } from 'react';
import {
    Text,
    View,
    Image,
    TouchableOpacity,
    Linking
} from 'react-native';
import styles from '../assets/style';
import QRCodeScanner from 'react-native-qrcode-scanner';

export default class ScanScreen extends Component {

    onSuccess(scanEvent) {
        this.props.navigation.navigate("Result", {
            'accessKey': scanEvent.data,
            'authorizationToken':navigation.getParam('authorizationToken', undefined), 
            "userData": navigation.getParam('userData', undefined),
            "methodName": "fetchData"
        });
    }

    render() {
        return (
            <View style={styles.container}>
                <QRCodeScanner
                    onRead={this.onSuccess.bind(this)}
                />
            </View>
        );
    }
}

任何想法,我在这里想念的是什么。非常感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:1)

确保您的屏幕已在react-navigation配置中注册(遵循本指南:找不到变量导航)。

或通过HOC withNavigationhttps://reactnavigation.org/docs/en/with-navigation.html将导航道具传递给它。相反,export default class ScanScreen extends Component执行class ScanScreen extends Component,并在文件末尾执行

export default withNavigation(ScanScreen);

别忘了导入高阶组件:import { withNavigation } from 'react-navigation';

还要确保所有本机部分都正确链接。例如react-native-gesture-handlehttps://kmagiera.github.io/react-native-gesture-handler/docs/getting-started.html#linking)。

答案 1 :(得分:0)

导航必须是道具的一部分,因此使用this.props.navigation访问导航即可解决此问题。