gpt4 book ai didi

reactjs - 使用来自 React Native : Empty parameters 中 Flatlist 中的自定义元素的参数进行导航

转载 作者:行者123 更新时间:2023-12-04 07:31:08 31 4
gpt4 key购买 nike

在没有成功解决我的问题后here ,我必须创建一个包含我所有类(class)的新问题。
我是 native react 的新手,并且在弄清楚如何通过传递参数从一个类导航到另一个类时遇到问题,希望您能提供帮助。
我想做的就是:

  • 带有包含 CustomButton
  • 的平面列表的 SessionCreate
  • 通过单击 CustomButton
  • 从 SessionCreate 导航到 ItemConfig
  • 将参数“元素”传递给 ItemConfig
  • 显示ItemConfig中传入的参数内容

  • 使用此设置,一个空的“元素”作为参数传递给 ItemConfigScreen(但不会发生错误):
    应用程序.js:
    //Views

    function Home({ navigation }) {
    return (
    <HomeScreen />
    );
    }

    function Session({ navigation }) {
    return (
    <SessionScreen />
    );
    }

    //subviews

    function SessionCreate({ navigation }) {
    return (
    <SessionCreateScreen />
    );
    }


    function ItemConfig({ navigation }) {
    return (
    <ItemConfigScreen />
    );
    }



    //navigation stacks
    const SessionStack = createStackNavigator();

    function SessionStackScreen({ navigation }) {
    return (
    <SessionStack.Navigator>
    <SessionStack.Screen
    name="Session"
    component={Session}
    options={{ tabBarLabel: 'Session!' }}
    />
    <SessionStack.Screen
    name="SessionCreate"
    component={SessionCreate}
    options={{ tabBarLabel: 'SessionCreate!' }}
    />
    <SessionStack.Screen
    name="ItemConfig"
    component={ItemConfig}
    options={{ tabBarLabel: 'ItemConfig!' }}
    />

    </SessionStack.Navigator>
    );
    }



    //Navbar Bottom
    const Tab = createBottomTabNavigator();

    function App() {
    return (
    <View style={[theme.colcontainer, { flexDirection: "column" }]} >

    <NavigationContainer>
    <Tab.Navigator
    screenOptions={({ route }) => ({
    tabBarIcon: ({ focused, color, size }) => {
    let iconName;

    if (route.name === 'Home') {
    iconName = focused ? 'home' : 'home-outline';
    } else if (route.name === 'Session') {
    iconName = focused ? 'book' : 'book-outline';
    }

    // dynamic ionicon
    return <Ionicons name={iconName} size={size} color={color} />;
    },
    })}


    >
    <Tab.Screen name="Home" component={Home} />
    <Tab.Screen name="Session" component={SessionStackScreen} />

    </Tab.Navigator>
    </NavigationContainer>
    </View >
    );
    }

    export default App;
    session 屏幕.js:
    function SessionScreen() {
    const navigation = useNavigation();

    return (
    <View style={[theme.container, { flexDirection: "column" }]} >

    <View>
    <TouchableOpacity onPress={() => navigation.navigate('SessionCreate')}>
    <Text >Create Session</Text>
    </TouchableOpacity>
    </View>

    </View >
    );
    }

    export default SessionScreen;
    session 创建屏幕.js:
        //data
    const sessionElements = [
    {
    id: "1",
    title: "title1"
    }
    ];


    function SessionCreateScreen() {
    const navigation = useNavigation()

    const renderItemConfiguration = ({ item }) => (
    <CustomButton element={item.title} onPress={() => navigation.navigate('ItemConfig', { element: 'item.title' })} />
    );

    return (

    <View style={{ flexDirection: "column", flex: 2}} >

    <SafeAreaView >
    <FlatList
    data={sessionElements}
    renderItem={renderItemConfiguration}
    keyExtractor={(item) => item.id}
    />
    </SafeAreaView>

    </View >
    );
    }



    export default SessionCreateScreen;
    ItemConfigScreen.js:
    const element = "";

    function ItemConfigScreen() {

    return (
    <ScrollView >
    <View style={{ flexDirection: "column", flex: 2}} >
    <Text>Configure {element} here</Text>
    </View >
    </ScrollView>
    );

    }

    export default ItemConfigScreen;
    任何帮助表示赞赏。

    最佳答案

    要在 ItemConfigScreen 中获取参数,您必须使用 react-navigation 包中的 useRoute Hook 。
    你可以在这里阅读更多信息 useRoute

    import {useRoute} from '@react-navigation/native';
    function ItemConfigScreen() {

    const route = useRoute();

    const element = route.params?.element;

    return (
    <ScrollView >
    <View style={{ flexDirection: "column", flex: 2}} >
    <Text>Configure {element} here</Text>
    </View >
    </ScrollView>
    );

    }


    在 CustomButton 中的 onPress 导航调用中也有一个错误,而不是 'item.title' 你将不得不通过 ${item.title}那么只有实际数据将被传递。 JS Template Literals
    <CustomButton element={item.title} onPress={() => navigation.navigate('ItemConfig', { element: `${item.title}` })} />

    关于reactjs - 使用来自 React Native : Empty parameters 中 Flatlist 中的自定义元素的参数进行导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67924307/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com