react-native version 0.62
Я создаю приложение для викторины, и на каждый новый вопрос (новый экран викторины, QuestionScreen.js
) я хочу обновить метку на панели навигации, которая объявлена в App.js
В App.js
, проблема здесь в том, что я не знаю, как передать состояние от questionIndex
до HomeScreen
или QuestionScreen
, обычно я думал, что это будет использовать такие реквизиты, как <Question questionIndex={questionIndex}>
. Я пытался передать их в options
, но, похоже, это не сработало ...
const App = () => {
const [questionIndex, setQuestionIndex] = useState(0);
return (
<NavigationContainer>
<Stack.Navigator initialRouteName='Home'
>
<Stack.Screen
name='Home'
component={HomeScreen}
options={{
title:''
}}
/>
<Stack.Screen
name='QuestionScreen'
component={QuestionScreen}
options={({ navigation }) => ({
headerBackTitleVisible: false,
headerRight: ()=>(<HeaderRight pageIndex={questionIndex}/>),
headerRightContainerStyle: {
alignItems: "flex-end",
paddingRight: 25
},
})}
/>
function HeaderRight(props) {
return (
<Text>{props.pageIndex}/{questions.length-1}</Text>
);
}
const HomeScreen = ({ navigation }) => {
return (
<View style={styles.container} >
<ScrollView>
<TouchableOpacity onPress={()=>
//here I'm unable to retrieve the questionIndex props.
//tried navigation.getParams("questionIndex") or route.params
navigation.navigate('QuestionScreen', {
pageIndex: 0
})
}>
In QuestionScreen.js
function QuestionScreen({route, navigation, options}) {
const { pageIndex } = route.params;
[Полный код здесь, на github] https://github.com/liaoxsong/expofirst Я новичок чтобы реагировать-нативно, и я пришел из собственной мобильной разработки, этот API-интерфейс Stack.Navigator выглядит странно, не могу ли я просто управлять заголовком навигации из самого компонента экрана? Так было бы проще.