2

我有一个 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>
        );
    }
}

知道我在这里缺少什么。非常感谢任何帮助。在此先感谢。

4

2 回答 2

1

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

或者使用 HOC 将导航道具传递给它withNavigationhttps ://reactnavigation.org/docs/en/with-navigation.html 。而是export default class ScanScreen extends Componentclass 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)。

于 2019-01-03T13:06:32.480 回答
0

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

于 2019-01-04T04:56:44.180 回答