React Native(둘): StatusBar, NavigationBar, TabBar

7315 단어
React Native(하나): 기본 React Native(둘): Status Bar, Navigation Bar와 TabBar React Native(셋째): 사용자 정의 보기 React Native(4): 뉴스 목록 불러오기 React Native(다섯): 위아래 새로 고침 React Native 불러오기(6): 모든 분류와 세부 정보 페이지 불러오기
프로젝트 주소

React Native Apps의 뷰 구조


우선 setup.jsRoot와 레이아웃의 코드를 바꾸세요.
class Root extends React.Component {
    render() {
        return (
            
                    
            
        );
    }
}


const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: 'white',
    },

});
React Native의 모든 인터페이스는 하나의 메인 화면에 있는데 이곳의 이것iOS 중의 Window과 같고 여기Android는 그다지 같지 않다.
물론 iOSAndroid에서 운행되긴 했지만 ViewControllerActivity로 전시되었다.

StatusBar

iOSAndroidStatusBar는 차이가 많지 않다. 모두 꼭대기 높이 20의 부분으로 신호, 전량 등 시스템의 정보를 표시하는 데 쓰인다.setup.jsStatusBar:
import {
    StyleSheet,
    Text,
    View,
    StatusBar
} from 'react-native';

class Root extends React.Component {
    render() {
        return (
            
                
            
        );
    }
}

StatusBar의 설정은 여기를 볼 수 있고 일부 속성은 특정 플랫폼에만 적용되는 것을 주의해야 한다.
이렇게 하면 전체AppStatusBar 스타일을 설정할 수 있고, 어떤 페이지AStatusBar가 특수 처리를 필요로 한다면 A 페이지에 StatusBar를 추가하여 설정할 수 있다.

Navigator


우리는 전체 Navigator 를 페이지 사이를 돌릴 수 있도록 App 를 사용해야 한다.NavigatoriOS의 것은 모두 페이지에 대한 pushpopAndroidNavigationView와 같은 것이 아니다.
공식 문서 여기 있습니다.
이제 App 폴더에 새 파일을 만듭니다App.js.
'use strict';


import React from 'react'

import {
    StyleSheet,
    View,
    Text

} from 'react-native';

export default class App extends React.Component {

    render() {
        return (
            
        main
            
        )
    }
}

const styles = StyleSheet.create({
    view: {
        flex: 1,
        backgroundColor: 'white',
        alignItems: 'center',
        justifyContent: 'center'

    },
});



그리고 setupStatusBar 아래에 Navigator:
import App from './App'


 {
        BackAndroid.addEventListener('hardwareBackPress', function() {
            if(navigator == null){
                return false;
            }
            if(navigator.getCurrentRoutes().length === 1){
                return false;
            }
            navigator.pop();
            return true;
        });

        let Component = route.component;
        return 
        //     route.params                 
    }}
/>


그중initialRoutecomponent를 설정하여 맨 밑에 있는 첫 페이지이다.
그리고 renderScene 제어push할 때 어떤 조작을 하는지 여기BackAndroid.addEventListener는 감청Android의 물리적 리턴 버튼을 눌렀다.
현재 실행 시 페이지 중간에 개main가 표시됩니다.
너는 왜 NavigationBar 없었는지 발견할 수 있을 거야. 우리 뒤에 추가하자.

tab-navigator


공식적으로TabBar가 없습니다. 저희는 제3자react-native-tab-navigator를 사용합니다.
프로젝트 루트에서 명령 실행하기
npm install react-native-tab-navigator --save

설치가 완료되면 App.js 가입TabNavigator:

const home_key = 'home'
const satin_key = 'satin'
const setting_key = 'setting'


import Home from './Home/Home'
import Satin from './Satin/Satin'
import Setting from './Setting/Setting'



     }
        renderSelectedIcon={() => }
        onPress={() => this.setState({ selectedTab: home_key })}>
    
        
    
     }
        renderSelectedIcon={() => }
        onPress={() => this.setState({ selectedTab: satin_key })}>
    
        
    
     }
        renderSelectedIcon={() => }
        onPress={() => this.setState({ selectedTab: setting_key })}>
    
        
    



배치도 비교적 이해하기 쉽다.
추가 파일 3개Home.js, Satin.jsSetting.js
import React from 'react'

import {
    View,
    StyleSheet
} from 'react-native'


export default class Satin extends React.Component {
    render() {
        return (
            

            
        )
    }
}

const styles = StyleSheet.create({
    view: {
        flex:1,
        backgroundColor: 'orange'
    }
})


각각 다른 색깔을 설정할 수 있어 인터페이스를 클릭하여 전환해도 뚜렷하다.
구체적인 코드는 항목을 볼 수 있다

NavigationBar


정부에서도 제공하지 않은 것에 동의합니다. NavigationBar 사용자 정의가 필요합니다.
그리고 Home.js, Satin.js, Setting.js에 가입


import React from 'react'

import {
    View,
    StyleSheet
} from 'react-native'

import NavigationBar from '../Custom/NavBarCommon'


export default class Home extends React.Component {
    render() {
        return (
            
                

            
        )
    }
}

const styles = StyleSheet.create({
    view: {
        flex:1,
        backgroundColor: 'white'
    }
})


navibar
프로젝트 주소

좋은 웹페이지 즐겨찾기