代码之家  ›  专栏  ›  技术社区  ›  Ben

作为道具通行

  •  0
  • Ben  · 技术社区  · 6 年前

    在React Native中,使用时 createStackNavigator ,我怎么通过 navigate 作为道具?

    • items 很好,但是 导航 undefined 当传递给 MyList .

    • undefined is not a function(evaluating 'navigate('ItemDetails', { itemId: item.id })') .

    • 我怎么能通过 糜棱岩


    export class MyScreen extends React.Component {
        render() {
            const { items }  = this.props;
            const { navigate } = this.props.navigation;
            console.log(navigate); // this logs [Function anonymous] :)
            return (
                <View>
                    <MyList items={items} navigate={navigate} />
                </View>
            );
        }
    }
    
    const MyList = ( { items }, { navigate } ) => {
        console.log(navigate); // this logs undefined :(
        return (
            <ScrollView>{ 
                items && items.map( item => 
                    <View key={item.id}>
                        <TouchableOpacity onPress={ () =>
                            navigate( 'ItemDetails', { itemId: item.id } )
                        }>
                            <Text>Go</Text>
                        </TouchableOpacity>
                    </View>
            )}</ScrollView>
    )}
    

    PS:如果我把所有的代码从 糜棱岩 MyScreen ,它会工作得很好。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Prasun    6 年前

    你应该改变 MyList 声明

    const MyList = ( { items, navigate } ) => {...}
    

    糜棱岩

    而不是传球 navigate 作为道具 withNavigation ,看一下文档 here 带导航 ,您可以直接从 props

    希望这会有帮助!