【问题标题】:Trying to get form values from NavigationService but getting undefined function error尝试从 NavigationService 获取表单值但出现未定义的函数错误
【发布时间】:2019-05-08 10:17:25
【问题描述】:

我有一个名为List.js 的页面和一个名为vansFilterModal.js 的List.js 组件文件,值来自List.js 中的NavigationSerice,但代码太大所以我创建了一个组件并移动了模态代码从 List.js 到 vansFilterModal.js 并在 List.js 中导入它,但是现在它没有获取值,它向我发送了这个错误:

TypeError: undefined is not an object (evaluating 'this.props.navigation.getParam('formData')')

Click here to see error screenshot

这是我的代码:

List.js:

        import React, { Component } from 'react';
        import { Platform, View, ScrollView, StatusBar, SafeAreaView, ActivityIndicator, TouchableOpacity } from 'react-native';
        import NavigationService from './../../Navigation/NavigationService';
        import VansFilterModal from './../../components/vansFilterModal';
        import VansFilterList from './../../components/vansFilterList';

        class ListPage extends Component {

        static navigationOptions = {
            title: 'List Page',
        };
        render() {
                const homeScreenData = this.props.navigation.getParam('formData');
                return (
                    <View style={styles.exampleContainer}>
                        <VansFilterList />
                        <VansFilterModal />
                    </View>
                );
            }
          }

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(ListPage);

vansFilterModal.js

    import React, { Component } from 'react';
    import { bindActionCreators } from "redux";
    import { connect } from "react-redux";
    import { View } from 'react-native';
    import { showVansFilter, hideVansFilter } from './../../actions/instantPricesAction';
    import {  Item, Input, Text } from 'native-base';
    import Modal from "react-native-modal";
    import NavigationService from './../Navigation/NavigationService';

    class VansFilterModal extends Component {

        render() {
            const homeScreenData = this.props.navigation.getParam('formData');
            const { visibleVansFilter, hideVansFilter } = this.props;
            return (
                <View>
                    <Modal
                        isVisible={visibleVansFilter}
                        onBackdropPress={() => hideVansFilter()}
                    >
                        <View>
                           <Text> {homeScreenData.pickupLocation}</Text>
                           <Text>{homeScreenData.dropoffLocation}</Text>
                           <Item rounded>
                               <Input placeholder="Pick up location" />
                           </Item>
                        </View>
                    </Modal>
                </View>
            )
        }
    }

NavigationService.js

import { NavigationActions } from 'react-navigation';

let _navigator;

const setTopLevelNavigator = (navigatorRef) => {
    _navigator = navigatorRef;
}

const navigate = (routeName, params) => {
    _navigator.dispatch(
        NavigationActions.navigate({
            routeName,
            params,
        })
    );
}

export default {
    navigate,
    setTopLevelNavigator,
};

谁能帮助我为什么它给我未定义的错误?

【问题讨论】:

  • 请分享mapStateToProps

标签: forms api react-native react-native-navigation formik


【解决方案1】:

如果this.props.navigation未定义,则必须使用withNavigation

import {withNavigation} from 'react-navigation'
class YourComponent extends Component {
    // ...
}
export default withNavigation(YourComponent)

【讨论】:

  • 糟糕,对不起,我正在使用类 ListPage 扩展组件,但我忘记写了。我已经更新了。请再次检查
  • 请再检查一遍
  • 我该怎么办?因为它已经导出默认连接(mapStateToProps,mapsDispatchToProps)(组件);像这样。?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 2018-09-13
  • 1970-01-01
  • 2016-05-12
相关资源
最近更新 更多