当前位置: 首页 > 面试题库 >

未定义不是对象(评估“ this.props.navigator.push”)

孔驰
2023-03-14
问题内容

无法完成这项工作,交叉检查了所有引用,但这没有帮助。这是该视图的所有代码。

我不确定我缺少什么,是否需要所有依赖项。

var React = require('react-native');
var Delivery = require('./Delivery');

var {
    View,
    Text,
    StyleSheet,
    TouchableHighlight,
} = React;


class ListItem extends React.Component{

    showDetails(){
        this.props.navigator.push({
            title: "Delivery details",
            component: Delivery
        });
    }

    render(){
        return(
            <TouchableHighlight onPress={this.showDetails.bind(this)} >
                <View style={styles.listItem}>
                    <View style={styles.listContents}>
                        <Text style={styles.listHead}>JMD Megapolis</Text>
                        <Text style={styles.listAddress}>1109, Sector 48, Sohna Road, Gurgaon 122018</Text>
                        <Text style={styles.listMeta}>2Kms from store</Text>
                    </View>
                    <View style={styles.listCost}>
                        <Text style={styles.cost}>₹40</Text>
                    </View>
                </View>
            </TouchableHighlight>
        )
    }
}

module.exports = ListItem;

问题答案:

如果您以这种方式调用ListView组件,则它应该可以工作。NavigatorIOS已经向下传递参考(但仅一代/一代)。

<NavigatorIOS
    initialRoute={{
        title: 'List View Component',
        component: ListView,
    }} />

但是,如果要从NavigatorIOS引用的组件的子组件中调用ListView组件,请尝试此操作。从NavigatorIOS引用的组件中,在其中调用,<ListView />添加一个navigator属性。

<ListView navigator={this.props.navigator} />

您需要记住在子组件中传递要访问的属性,因此,如果<NavigatorIOS />要从NavigatorIOS未直接引用的组件中更改显示的组件,则需要像上面一样向下传递navigator属性。

希望这可以帮助。



 类似资料: