[Vue Native] NativeBase - navigator

[Vue Native] NativeBase - navigator

Vue NativeBase를 이용한 header navigator 메모 포스팅..

이 포스팅에서 쓰이는 component는 요종도..

1. src/index.vue

- template 구성

- NativeBase에서 제공하는 필요한 부분을 import시켜준다

import { createAppContainer, createStackNavigator, createDrawerNavigator } from "vue-native-router"; import { Root } from "native-base"; import HomeScreen from "./pages/home/index.vue"; import SideBarScreen from "./pages/sidebar/index.vue";

- 테스트로 추가해본 메뉴 구성

import AnatomyScreen from "./pages/anatomy/index.vue"; import RaisonScreen from "./pages/raison/index.vue";

const Drawer = createDrawerNavigator( { Home: { screen: HomeScreen }, Anatomy: { screen: AnatomyScreen }, Raison: { screen: RaisonScreen }, }, { initialRouteName: "Home", contentOptions: { activeTintColor: "#e91e63" }, contentComponent: SideBarScreen } ); const AppNavigation = createAppContainer( createStackNavigator( { Drawer: { screen: Drawer }, }, { initialRouteName: "Drawer", headerMode: "none" } ) ); export default { components: { Root, AppNavigation } };

Drawer에 createDrawerNavigator을 담아주고 구성요소를 넣어보자

- Home, Anatomy, Raison 이라는 name명으로 잡아준다. 리스트 목록이라고 보면 될듯하다

- initialRouteName 는 첫화면 route를 표시해주는 것같다

추후 위에서 import한 SideBarScreen에서 name 명을 동일하게 해줘야하니 신경쓰도록하자

이제 네비게이션을 불러올 header가있는 src/pages/home/index.vue를 보도록하자

2.src/pages/home/index.vue

Header21 export default { props: { navigation: { type: Object } }, data() { return { }; }, methods: { handleLetGoBtnPress() { this.navigation.openDrawer(); } } };

연결된 디바이스에서 확인한 모오습

햄버거 메뉴를 눌렀을때 props로 넘겨받은 navigation의 openDrawer를 불러오는데 이부분은 좀더 찾아봐야할거같다..

3.src/pages/sidebar

기존 NativeBase에서 제공하는 sidebar를 긁어와서 사용함 필요없는부분은 빼면 될듯하다..

datas:[ ] 내에 name, route, icon, bg 등을 설정해주면 된다.

{{ data.name }} {{ `${data.types} Types` }} import { Dimensions, Platform } from "react-native"; import drawerCover from "../../../assets/drawer-cover.png"; import drawerImage from "../../../assets/logo-kitchen-sink.png"; const deviceHeight = Dimensions.get("window").height; const deviceWidth = Dimensions.get("window").width; export default { props: { navigation: { type: Object } }, data() { return { drawerCover, drawerImage, stylesObj: { drawerCoverObj: { height: deviceHeight / 3.5 }, drawerImageObj: { left: Platform.OS === "android" ? deviceWidth / 10 : deviceWidth / 9, top: Platform.OS === "android" ? deviceHeight / 13 : deviceHeight / 12, resizeMode: "cover" }, badgeText: { fontSize: Platform.OS === "android" ? 11 : 13, marginTop: Platform.OS === "android" ? -3 : 0, fontWeight: "400" } }, datas: [ { name: "eastarm", route: "Anatomy", icon: "phone-portrait", bg: "#C5F442" }, { name: "raison", route: "Raison", icon: "phone-portrait", bg: "#000000" } ] }; }, methods: { handleListItemClick(dataObj) { this.navigation.navigate(dataObj.route); } } }; .sidebar-content-wrapper { flex: 1; background-color: #fff; } .drawer-cover { flex: 1; align-self: stretch; position: relative; margin-bottom: 10; } .drawer-image { align-self: center; position: absolute; height: 75; width: 210; } .list-item-badge-container { border-radius: 3; height: 25; width: 72; } .list-item-badge-text { /* font-weight: 400; // not-working */ /* font-weight: bold; // working */ text-align: center; }

일단 간단하게 포스팅후 다시 정리를 해봐야 할듯하다..

참고 사이트

- https://docs.nativebase.io/Components.html#header-def-headref

- https://vue-native.io/docs/vue-native-router.html#Basic-navigation-with-a-stack-navigator

from http://dh5032.tistory.com/41 by ccl(A) rewrite - 2020-03-13 19:20:16

댓글

이 블로그의 인기 게시물

[React] - 18) 프로젝트 빌드하기(+코드 스플리팅)

단위 테스트 환경 구축

React에서 웹팩 설치하기