React Navigation Fundamentals 5: 탐색 헤드 구성
19036 단어 ReactNativeNavigation
탐색 헤드 구성
헤드 헤더 설정
화면 구성 요소는 정적 속성 navigationOptions
을 가지고 있으며, 하나의 대상이나 하나의 대상을 되돌려주는 함수를 가지고 있으며, 이 대상은 각종 설정 옵션을 포함한다.머리글 제목을 사용하는 옵션은 다음과 같이 title
라고 합니다.//
class HomeScreen extends React.Component {
// , navigationOptions
static navigationOptions = {
title: 'Home', //
};
/* render */
}
//
class DetailsScreen extends React.Component {
// , navigationOptions
static navigationOptions = {
title: 'Details', //
};
/* render */
}
→ 이 코드를 실행합니다StackNavigator
기본적으로 플랫폼 자체의 약속을 채택했기 때문에 iOS에서는 제목이 중간이고 안드로이드에서는 왼쪽으로 정렬된다.
헤더에서 매개변수 사용
제목에 파라미터를 사용하려면 navigationOptions
설정 대상을 되돌려 주는 함수 형식으로 써야 합니다.navigationOptions
에서 사용하고 싶을 수도 있습니다. this.props
그러나 이것은 구성 요소 종류의 정적 방법입니다. this
구성 요소의 실례를 가리키지 않기 때문에 속성 props
이 사용할 수 없습니다.그러나 navigationOptions
를 함수로 정의하고 React Navigation이 호출할 때 전달 대상{ navigation, navigationOptions, screenProps }
을 전달한다. 여기서 우리가 주목하는 것은 navigation
이다. 이것은 화면 구성 요소에 정식으로 전달되는 실례this.props.navigation
이다.navigation.state.params
에서 navigation
에서 파라미터를 얻을 수 있다는 것을 기억할 수 있습니다. 현재 우리는 이런 방식으로 파라미터를 가져와 제목으로 사용합니다.class DetailsScreen extends React.Component {
// , React Navigation :
// { navigation, navigationOptions, screenProps }
static navigationOptions = ({ navigation }) => {
const { params } = navigation.state;
return {
title: params ? params.otherParam : 'A Nested Details Screen',
}
};
/* render */
}
→ 이 코드를 실행합니다
함수navigationOptions
에 전달되는 객체는 다음과 같은 속성을 가집니다.
//
class HomeScreen extends React.Component {
// , navigationOptions
static navigationOptions = {
title: 'Home', //
};
/* render */
}
//
class DetailsScreen extends React.Component {
// , navigationOptions
static navigationOptions = {
title: 'Details', //
};
/* render */
}
class DetailsScreen extends React.Component {
// , React Navigation :
// { navigation, navigationOptions, screenProps }
static navigationOptions = ({ navigation }) => {
const { params } = navigation.state;
return {
title: params ? params.otherParam : 'A Nested Details Screen',
}
};
/* render */
}
navigation
- 화면의 내비게이션 속성 정보, 루트 정보navigation.state
에 있습니다.screenProps
- The props passing from above the navigator component 위의 예는
navigation
만 필요하지만, 어떤 경우에는 screenProps
또는 navigationOptions
가 필요할 수도 있습니다.##사용
setParams
업데이트navigationOptions
우리는 마운트된 스크린 자체에서 현재 활성화된 스크린navigationOptions
구성을 업데이트하는 작업을 자주 합니다. /* render() */
<Button
title=" "
onPress={() => this.props.navigation.setParams({otherParam: 'Updated!'})}
/>
/** , , params.otherParam **/
→ 이 코드를 실행합니다
머리 스타일 조정
맞춤형 화면 자신의 머리 스타일은 세 가지 관건적인 속성이 있는데 그것이 바로
headerStyle
,headerTintColor
와headerTitleStyle
이다.headerStyle
: 머리를 감싸는 View
용기에 적용되는 스타일 대상.이 속성에 backgroundColor
을 설정하면 화면 헤더의 배경색이 됩니다.headerTintColor
: 버튼과 제목 문자의 색을 되돌려줍니다.아래의 예에서 우리는 이 속성을 흰색#fff
으로 설정하면 되돌아오는 단추와 제목 문자의 색깔은 흰색이다.headerTitleStyle
: if we want to customize the fontFamily, fontWeight and other Text style properties for the title, we can use this to do it. class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Home',
headerStyle: {
backgroundColor: '#f4511e',
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold',
},
};
/* render function, etc */
}
→ 이 코드를 실행합니다
여기에 주의해야 할 몇 가지 일이 있다.
Home
화면에만 적용된다.우리가 Details
화면으로 내비게이션을 하자, 부족한 스타일이 다시 돌아왔다.이제 화면 공유navigationOptions
설정을 살펴보겠습니다.화면 공유navigationOptions 구성
보통 우리는 많은 화면의 머리를 비슷하게 설정해야 한다.예를 들어 당신 회사의 브랜드 색은 빨간색이기 때문에 머리를 빨간색 배경의 흰색 문자로 바꾸고 싶습니다.공교롭게도 이것은 바로 우리가 위에서 실행한 예 중
HomeScreen
화면 헤드의 배색 방안이다.그러나 DetailsScreen
화면에 뛰어들었을 때, 머리 배색이 다시 부족한 설정으로 돌아왔다는 것을 알 수 있을 것이다.navigationOptions
속성 설정을 HomeScreen
에서 DetailsScreen
로 복사하는 것은 좀 무섭지 않습니까?그럼 앱에 있는 화면마다 이렇게 하면?고맙게도 우리는 이렇게 할 필요가 없다.우리는 배치를 StackNavigator
위로 옮길 수 있다.class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Home',
/* , , */
};
/* render function, etc */
}
/* other code... */
const RootStack = StackNavigator(
{
Home: {
screen: HomeScreen,
},
Details: {
screen: DetailsScreen,
},
},
{
initialRouteName: 'Home',
/* */
navigationOptions: {
headerStyle: {
backgroundColor: '#f4511e',
},
headerTintColor: '#fff',
headerTitleStyle: {
fontWeight: 'bold',
},
},
}
);
→이 코드를 실행하면 현재
RouteStack
에 속하는 모든 화면이 우리의 통일된 브랜드 스타일을 사용하고 있다.그러나 확실한 것은 필요한 경우에도 이 설정을 덮어쓸 수 있는 방법이 있어야 한다는 것이다.공유된 navigationOptions 덮어쓰기
어떤 화면에서 자신이 정의한
navigationOptions
와 소속StackNavigator
이 정의한 navigationOptions
를 합치면 최종적으로 효력이 발생하고 화면에서 정의한 navigationOptions
의 우선순위가 높다.우리는 이 지식을 이용하여 DetailsScreen
에서 머리 앞의 경치와 배경색을 대조한다.class DetailsScreen extends React.Component {
static navigationOptions = ({ navigation, navigationOptions }) => {
const { params } = navigation.state;
return {
title: params ? params.otherParam : 'A Nested Details Screen',
/* StackNavigator ! */
headerStyle: {
backgroundColor: navigationOptions.headerTintColor,
},
headerTintColor: navigationOptions.headerStyle.backgroundColor,
};
};
/* render function, etc */
}
사용자 정의 어셈블리를 사용하여 제목 바꾸기
제목의 문자와 스타일만 수정하는 것이 아니라 머리를 더 많이 제어해야 할 때가 있다.예를 들어, 제목을 그림으로 바꾸거나, 제목을 단추로 바꾸고 싶을 수도 있다.이 경우 헤더 표준의 제목 구성 요소를 사용자 정의 구성 요소로 교체해야 합니다.
class LogoTitle extends React.Component {
render() {
return (
<Image
source={require('./spiro.png')}
style={{ width: 30, height: 30 }}
/>
);
}
}
class HomeScreen extends React.Component {
static navigationOptions = {
// headerTitle ,
// LogoTitle
headerTitle: <LogoTitle />,
};
/* render function, etc */
}
→ 이 코드를 실행합니다
너는 왜 우리가 제공한 구성 요소가 이전처럼 주지 않고
headerTitle
주었는지 이상할지도 모른다.이것은 title
가 headerTitle
의 속성이기 때문에 제목 문자StackNavigator
를 표시하는 데 사용되는 title
구성 요소가 부족합니다.추가 구성
Text
화면StackNavigator
에서 사용할 수 있는 속성 옵션의 전체 목록은 StackNavigator 참조 매뉴얼에서 읽을 수 있습니다.총결산
navigationOptions
정적 속성을 통해 화면 헤더를 사용자 정의할 수 있습니다.이 속성은 옵션의 전체 목록을 참고할 수 있습니다.navigationOptions
는 하나의 대상이나 함수일 수 있다.함수일 때 호출될 때 대상 매개 변수 navigationOptions
를 제공합니다.{ navigation, navigationOptions, screenProps }
를 초기화할 때 StackNavigator
내비게이션의 모든 화면에 공유할 수 있습니다.그러나 화면마다 정적 속성navigationOptions
이 우선순위가 높아 공유 설정을 덮어쓸 수 있다.영문 원문
이 시리즈의 글 목록
React Navigation Fundamentals 8: 용어 용어집 React Navigation Fundamentals 7: 전체 화면 모드 React Navigation Fundamentals 6: 헤드 버튼 React Navigation Fundamentals 5: 탐색 헤드 React Navigation Fundamentals 구성 4: 화면 간 전환 매개 변수 전달 React Navigation Fundamentals Fundamentals 3: 화면 간 전환 React Navigation Fundamentals Fundamentals 2: Hello Re
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바삭바삭하고 간단한 결제 페이지 만들기먼저 Next.js에서 프로젝트를 만듭니다. Vercel & Next.js가 매우 편하기 때문에 최근에는이 구성을 사용하고 있습니다. 그런 다음 Tailwind CSS를 넣습니다. Tailwind CSS를 사용하면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.