【问题标题】:Can't add multiple childen in react无法在反应中添加多个孩子
【发布时间】:2023-01-19 23:15:30
【问题描述】:

当我尝试在底部选项卡中添加图标时 https://icons.expo.fyi/ 它显示 Tab.Navigator 错误

This JSX tag's 'children' prop expects a single child of type 'ReactNode', but multiple children were provided.ts(2746)

我尝试添加

children: React.ReactNode;

但出现 ReactNode 错误

Property 'ReactNode' does not exist on type 'typeof React'.ts(2339)

这是 index.tsx 文件

 const Tab = createBottomTabNavigator();

 function BottomTabNavigator() {
   return (
      <Tab.Navigator>
       <Tab.Screen name="Dashboard" component={DashboardScreen} />
       screenOptions={({ route }) => ({
          tabBarIcon: ({ focused, color, size }) => {
            let iconName;
            if (route.name === 'Dashboard') {
              iconName = focused
                ? 'ios-speedometer'
                : 'ios-speedometers';
            } else if (route.name === 'Settings') {
              iconName = focused ? 'ios-list' : 'ios-list-outline';
            }
       <Tab.Screen name="Settings" component={TabTwoScreen} />
     </Tab.Navigator>
   );
 }

https://reactnavigation.org/docs/tab-based-navigation/

https://reactnavigation.org/docs/bottom-tab-navigator/

【问题讨论】:

    标签: reactjs typescript react-native navigation children


    【解决方案1】:

    检查你的样品:

    1. screenOptions 是 Navigator 的一个属性
    2. 每个左括号都有一个右括号
      function BottomTabNavigator() {
             return (
                <Tab.Navigator>
                 <Tab.Screen name="Dashboard" component={DashboardScreen} />
                 screenOptions={({ route }) => ({ // Is property of Navigator
                    tabBarIcon: ({ focused, color, size }) => {
                      let iconName;
                      if (route.name === 'Dashboard') {
                        iconName = focused
                          ? 'ios-speedometer'
                          : 'ios-speedometers';
                      } else if (route.name === 'Settings') {
                        iconName = focused ? 'ios-list' : 'ios-list-outline';
                      } // closing brackets are missing
                 <Tab.Screen name="Settings" component={TabTwoScreen} />
               </Tab.Navigator>
             );
           }
      

      它应该看起来像:

      const Tab = createBottomTabNavigator();
      
      function BottomTabNavigator() {
        return (
          <Tab.Navigator
            screenOptions={({route}) => ({
              tabBarIcon: ({focused, color, size}) => {
                let iconName;
                if (route.name === 'Dashboard') {
                  iconName = focused ? 'ios-speedometer' : 'ios-speedometers';
                } else if (route.name === 'Settings') {
                  iconName = focused ? 'ios-list' : 'ios-list-outline';
                }
              }
            })}
          >
            <Tab.Screen name='Dashboard' component={DashboardScreen} />
            <Tab.Screen name='Settings' component={TabTwoScreen} />
          </Tab.Navigator>
        );
      }
      

    【讨论】:

    • 我可以再问一个问题吗我如何才能分离图标,它只显示 1 个选项卡图标
    • 我不明白这个问题。创建一个新线程并尝试更详细地解释您想知道的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2014-12-03
    相关资源
    最近更新 更多