inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 리액트 네이티브 기초

탭 아이콘 넣어주기

BottomTabScreen 관련 질문입니다.

해결된 질문

587

작성자 없음

작성한 질문수 0

1

import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import React from 'react';
import Home from './src/screens/Home';
import Search from './src/screens/Search';
import Profile from './src/screens/Profile';
import Activity from './src/screens/Activity';
import {NavigationContainer} from '@react-navigation/native';
import Status from './src/screens/Status';
import FriendProfile from './src/screens/FriendProfile';
import EditProfile from './src/screens/EditProfile';

const App = () => {
const Stack = createNativeStackNavigator();
const Tab = createBottomTabNavigator();
const BottomTabScreen = () => {
  return (
    <Tab.Navigator
      screenOptions={() => ({
        tabBarHideOnKeyboard: true,
        // tabBarShowLabel: false,
        headerShown: false,
        tabBarStyle: {
          height: 70,
        },
      })}>
      <Tab.Screen name="Home" component={Home} />
      <Tab.Screen name="Search" component={Search} />
      <Tab.Screen name="Activity" component={Activity} />
      <Tab.Screen name="Profile" component={Profile} />
    </Tab.Navigator>
  );
};

  return (
    <NavigationContainer>
      <Stack.Navigator screenOptions={{headerShown: false}}>
        <Stack.Screen name="Bottom" component={BottomTabScreen} />
        <Stack.Screen name="Status" component={Status} />
        <Stack.Screen name="FriendProfile" component={FriendProfile} />
        <Stack.Screen name="EditProfile" component={EditProfile} />
      </Stack.Navigator>
    </NavigationContainer>
  );
};

export default App;

 

강의 내용과 같이 App 컴포넌트 안에서

BottomTabScreen 컴포넌트를 선언하면

 

"Do not define components during render." 라는

경고문이 뜹니다.

 

그래서 아래와 같이 코드를 수정하였는데

App 컴포넌트 바깥에서 이렇게 선언해도 문제가 없는건가요?

import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
import {createNativeStackNavigator} from '@react-navigation/native-stack';
import React from 'react';
import Home from './src/screens/Home';
import Search from './src/screens/Search';
import Profile from './src/screens/Profile';
import Activity from './src/screens/Activity';
import {NavigationContainer} from '@react-navigation/native';
import Status from './src/screens/Status';
import FriendProfile from './src/screens/FriendProfile';
import EditProfile from './src/screens/EditProfile';

const Stack = createNativeStackNavigator();
const Tab = createBottomTabNavigator();
const BottomTabScreen = () => {
  return (
    <Tab.Navigator
      screenOptions={() => ({
        tabBarHideOnKeyboard: true,
        // tabBarShowLabel: false,
        headerShown: false,
        tabBarStyle: {
          height: 70,
        },
      })}>
      <Tab.Screen name="Home" component={Home} />
      <Tab.Screen name="Search" component={Search} />
      <Tab.Screen name="Activity" component={Activity} />
      <Tab.Screen name="Profile" component={Profile} />
    </Tab.Navigator>
  );
};

const App = () => {
  return (
    <NavigationContainer>
      <Stack.Navigator screenOptions={{headerShown: false}}>
        <Stack.Screen name="Bottom" component={BottomTabScreen} />
        <Stack.Screen name="Status" component={Status} />
        <Stack.Screen name="FriendProfile" component={FriendProfile} />
        <Stack.Screen name="EditProfile" component={EditProfile} />
      </Stack.Navigator>
    </NavigationContainer>
  );
};

export default App;

 

react react-native expo

답변 3

0

ab kim

추가로, 아이콘 이름 넣는 부분에서

24년5월7일 기준으로 아이콘 이름이 변경된 것 같네요.

 

"react-native-vector-icons": "^10.1.0")
          if (route.name === 'Home') {
            iconName = focused ? 'home-sharp' : 'home-outline';
          } else if (route.name === 'Search') {
            iconName = focused ? 'search' : 'search-outline';
          } else if (route.name === 'Activity') {
            iconName = focused ? 'heart' : 'heart-outline';
          } else if (route.name === 'Profile') {
            iconName = focused ? 'person-circle' : 'person-outline';
          }

0

jinbokk

강의를 조금 더 진행하며 tabBarIcon 부분에서도 똑같이 경고문이 발생하네요.. 무시해도 되는 부분들인지 궁금합니다

0

jinbokk

수정한 코드로도 기능 자체는 정상적으로 동작을 하는데, 이런 방식으로 컴포넌트 바깥에서 변수나 함수를 선언하면 좋지 않다는 글을 어딘가에서 본 기억이 나서 질문 드렸습니다!

21강 11분 59초 버그

1

48

0

svg질문

0

62

1

강의 자료 다운

0

95

1

expo가 안깔리고 에러가 납니다.

0

202

3

React-Native 강의중 expo 모바일이랑 연결 중에 이런 오류가 나네요

0

209

1

getStatusBarHeight () 화면UI적용

0

123

1

navigation쓸때 오류

0

161

1

수업외로 궁금한거 2

0

82

1

수업 외로 궁금한거!

0

87

1

파이어베이스 버전 11 오류

0

96

1

마지막 9번째 Redux 관련 자료가 없어요

0

77

1

오류 잡기

0

115

0

강의에서 InputForm.js에서

0

114

2

React-Native-Cli 컴파일 오류

0

197

2

윈도우에서 cli 이용해서 ios개발이 가능한가요?

0

690

2

android studio에서 시뮬레이터를 실행시 cpu 과도 사용 질문

0

239

1

Execution failed for task ':app:checkDebugDuplicateClasses'. 에러 해결

0

323

1

선생님 이다음 remote push 부분 강의가 없습니다.

0

191

2

Check the render method of `SceneView`. 오류

0

347

3

진도가 100% 완료가 안됩니다.

0

214

1

진행도가 100% 안찍혀요

0

222

1

프로젝트 예제 코드는 깃헙에서 따로 볼 수 있을까요?

0

142

1

expo 환경설정 관련해서 문의드립니다.

0

423

1

'NavigationContainer' 중첩 오류

0

407

1