대응 탐색 탐색기 내의 구성요소로 소품을 전달하는 방법
전화를 통해 소품을 포장한 부품에 전달하려고 한다.create...Navigator
전화, 즉
// Search.js
const Navigator = createMaterialTopTabNavigator({
Wines,
Stores,
Vineyards,
Restaurants
});
// Somewhere in render()...
<Navigator />
나는 어떻게 하면 매개 변수를 에 전달해 줄 수 있는지 알아내려고 한다.Wines
/Stores
/ 등으로부터 구성 요소Search
구성 요소(위)내가 문서를 읽어봤는데 쉽게 할 수 있을 것 같아.navigation.navigate
어떤 대상을 통과해서, 그러나 나는 이 특정한 방법으로 그것을 어떻게 해야 할지 잘 모르겠다.누가 좀 도와주시겠습니까?
너의 예는 조금 애매해서 나는 최대한 설명하려고 노력한다.
화면에 속성을 전달하는 방법에는 두 가지가 있다(환원 구현 제외).
1) 행동
통과를 통해 탐색된 화면에 매개 변수를 전달할 수 있음params
스크린에 대한 논쟁
navigation.navigate({routeName, params, action, key}) OR navigation.navigate(routeName, params, action)
routeName - 앱의 라우터 어딘가에 등록된 대상 routeName
매개 변수 - 대상 경로에 병합할 매개 변수
액션 - (고급)화면이 네비게이터인 경우 하위 라우터에서 실행할 하위 액션.지원되는 작업의 전체 목록은 작업 문서를 참조하십시오.
키 - 탐색할 경로의 선택적 식별자.이 경로가 이미 있는 경우 이 경로로 다시 이동
샘플
this.props.navigate('Profile', { name: 'Brent' })
2) screenProps
모든 화면에서 해당 내비게이션에 사용할 수 있는 전역 파라미터를 내비게이션에 전달할 수 있다.
화면 제안 - 하위 화면으로 추가 옵션 전달
샘플
const SomeStack = createStackNavigator({
// config
});
<SomeStack
screenProps={/* this prop will get passed to the screen components as this.props.screenProps */}
/>
나는 네가 달성하려고 하는 작은 샘플 앱을 만들었어.
const Tab = ({name, searchValue}) => (
<View style={styles.tabContainer}>
<Text>{name}</Text>
<Text>{`Searching: ${searchValue || '...'}`}</Text>
</View>
);
const Wines = (props) => (<Tab name="Wines Page" searchValue={props.screenProps.searchValue} />);
const Stores = (props) => (<Tab name="Stores Page" searchValue={props.screenProps.searchValue} />);
const Vineyards = (props) => (<Tab name="Vineyards Page" searchValue={props.screenProps.searchValue} />);
const Restaurants = (props) => (<Tab name="Restaurants Page" searchValue={props.screenProps.searchValue} />);
const Navigator = createMaterialTopTabNavigator({
Wines,
Stores,
Vineyards,
Restaurants
});
export default class App extends Component {
state = {
text: ''
}
changeText = (text) => {
this.setState({text})
}
clearText = () => {
this.setState({text: ''})
}
render() {
return (
<View style={styles.container}>
<SearchBar
lightTheme
value={this.state.text}
onChangeText={this.changeText}
onClearText={this.clearText}
placeholder='Type Here...' />
<Navigator screenProps={{searchValue: this.state.text}} />
</View>
);
}
}
이를 바탕으로 다음과 같은 화면에도 속성을 전달할 수 있다.
return (
<NavigationContainer>
<Tab.Navigator>
<Tab.Screen name="Home">
{(props) => <HomeScreen {...props} text={homeText} />}
</Tab.Screen>
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
</NavigationContainer>
);
문서와 다음 방법의 차이
<Tab.Screen name="Home" component={HomeScreen} />
다음 사항:
<Tab.Screen name="Home">
{(props) => <HomeScreen {...props} text={homeText} />}
</Tab.Screen>
이것은 비슷한 경우에 나에게 아주 잘 먹혔다.
'programing' 카테고리의 다른 글
Typecript 인터페이스 내의 모든 속성 선택사항으로 설정 (0) | 2022.03.17 |
---|---|
TypeScript에서 가져온 유형의 주변 선언 (0) | 2022.03.17 |
기본 인코딩이 ASCII인데 Python이 유니코드 문자를 인쇄하는 이유는? (0) | 2022.03.17 |
setup.py이란 무엇인가? (0) | 2022.03.17 |
각도 2는 여러 구성 요소에 걸쳐 웹 소켓 서비스를 공유함 (0) | 2022.03.17 |