Create Bottom Tab Navigator in React Native

min read

Day 17 #100DaysOfCode

Ở bài viết vừa qua, ta đã xây dựng các route chuyển hướng qua lại giữa các component rồi, hôm này mình tìm hiểu thêm cách khác nửa đó là sử dụng tab để thay đổi qua lại component
Đầu tiên cũng như mọi khi ta cần cài đặt và tải project về, ở đây mình đã có sẵn, bạn nào chưa có thì xem lại bài viết sau để tải project nhé

 

+ Install React Native on PC and Mac

Okay, đầu tiên bạn cmd đến project bạn và cài đặt @react-navigation/bottom-tabs@react-navigation/native

npm install @react-navigation/bottom-tabs @react-navigation/native

Okay, tạo file theo đường dẫn sau src/components/NavigationBottom.js để cấu hình bottom-tab 

import React from 'react';
import { StyleSheet, Dimensions } from 'react-native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
/* icon */
import Icon from 'react-native-vector-icons/Ionicons';
import Home from './Home';

import About from './About';
import Message from './Message';
import Contact from './Contact';
import Product from './Product';
const NavigationBottom = () => {
    const Tab = createBottomTabNavigator();

    return (


        <Tab.Navigator initialRouteName="Home"
            tabBarOptions={{
                activeTintColor: '#F14506',
                inactiveTintColor: '#000',

                style: {
                    backgroundColor: "#fff",
                    borderTopColor: 'rgba(225,225,225,0.2)'
                },

            }}>
            <Tab.Screen name="Home" options={{
                title: "Trang chủ",
                tabBarIcon: ({ color, size }) => (

                    <Icon name="home-outline" color={color} size={size} />
                ),
            }} component={Home} />
            <Tab.Screen name="Product" options={{
                title: "Sản phẩm",
                tabBarIcon: ({ color, size }) => (
                    <Icon name="basket-outline" color={color} size={size} />
                ),

            }} component={Product} />
            <Tab.Screen name="Khuyenmai" options={{
                title: 'Khuyến mãi',
                tabBarIcon: ({ color, size }) => (
                    <Icon name="basket-outline" color={color} size={size} />
                  
                ),
            }} component={About} />
            <Tab.Screen name="Message" options={{
                title: "Thông báo",
                tabBarIcon: ({ color, size }) => (
                    <Icon name="chatbox-ellipses-outline" color={color} size={size} />
                ),
            }} component={Message} />
            <Tab.Screen name="Contact" options={{
                title: "Liên hệ",
                tabBarIcon: ({ color, size }) => (
                    <Icon name="call-outline" color={color} size={size} />
                ),
            }} component={Contact} />
        </Tab.Navigator>


    )
}
const styles = StyleSheet.create({
    btnKhuyenmai: {
        borderRadius: (Dimensions.get("window").width / 5) / 2,
        width:Dimensions.get("window").width / 5,
        height:Dimensions.get("window").width / 5,
        paddingHorizontal: 5,
        paddingVertical: 5,
        justifyContent: 'center',
        alignItems: 'center',
       
        position: 'absolute',
        top: -30,
        

    },
    titleKhuyenmai: {
        color: "#fff",
        fontSize: 13,
        fontWeight:'bold'

    }
})

export default NavigationBottom;

Các bạn nhìn trong đoạn code trên mình có sử dụng một thư viện như (react-native-vector-icons) dùng để add icon cho mấy nút button tab cho đẹp xíu
Vì thế bạn cần cài đặt thư viện react-native-vector-icons như sau :

npm install react-native-vector-icons

Để sử dụng được icon ta cần import thư viện react-native-vector-icons vào

import Icon from 'react-native-vector-icons/Ionicons';

Chú ý "Ionicons" là loại font mà thư viện hổ trợ, các bạn có thể xem thêm tại đây : https://oblador.github.io/react-native-vector-icons/

Okay tiếp theo,ta cần import gọi tới thư viện bottom-tab như sau để cấu hình bottom-tab:

import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

Bạn chắc cũng thấy bên trên mình có gọi import một số component như(Home,About,Contact,Message,Product) vì thế bạn cần phải tạo từng component trong đường dẫn src/components
+ src/components/Home.js
+ src/components/About.js
+ src/components/Contact.js
+ src/components/Message.js
+ src/components/Product.js 

Sau khi tạo xong thì bạn chỉ cần gọi nó thôi 

import Home from './Home';
import About from './About';
import Message from './Message';
import Contact from './Contact';
import Product from './Product';

initialRouteName :  dùng chọn hiển thị component đầu tiên, các bạn có thể xem thêm tại đây : https://reactnavigation.org/docs/bottom-tab-navigator/

Dimensions : rất hay dùng để lấy chiều cao màng hình và ngang, VD: Dimensions.get("window").width  or Dimensions.get("window").height , bạn dùng rất nhiều trong việc thiết kế giao diện sản phẩm cho người dùng

Hãy mở file App.js lên, ta cần import component NavigationBottom.js vào file 

import React from 'react';
import { View, Text, StyleSheet } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import NavigationBottom from './src/components/NavigationBottom';

const App = () => {

  return (
    <>
      <NavigationContainer>
        <NavigationBottom />
      </NavigationContainer>
    </>
  )
}
const styles = StyleSheet.create({

})

export default App;

Vậy là bạn đã có được bottom-tab rất đẹp, tùy vào yêu cầu, mà bạn bạn cấu hình theo ý mình nhé!

 

 

 

x

Ủng hộ tôi bằng cách click vào quảng cáo. Để tôi có kinh phí tiếp tục phát triển Website!(Support me by clicking on the ad. Let me have the money to continue developing the Website!)