#javascript #reactjs #react-native #react-navigation
#javascript #reactjs #react-native #реагировать-навигация
Вопрос:
У меня возникли проблемы при попытке передать некоторые данные на другой экран. В настоящее время используется useState
перехват, и я хотел бы использовать значение на следующем экране.
NumScreen.JS:
import React, { useState } from "react";
import { Text, TextInput, Button, View, StyleSheet, TouchableOpacity } from "react-native";
function NumScreen({ navigation }) {
const [num, setNum] = useState("0");
const pressHandler1 = () => {
navigation.navigate("CalcScreen", { num });
}
const Separator = () => (
<View style={styles.separator} />
);
return (
<View style={styles.container}>
<Text>Enter Number of People:</Text>
<TextInput
returnKeyType="done"
keyboardType="numeric"
style={styles.input}
placeholder="e.g. 3"
onChangeText={(val) => setNum(val)}
/>
<Text> Number: {num} </Text>
<Separator />
<TouchableOpacity onPress={pressHandler1}>
<Text style={styles.button}>Submit</Text>
</TouchableOpacity>
</View>
);
}
export default NumScreen;
Я хочу получить значение num на следующий экран, я попытался отправить значение, используя navigation.navigate
затем попытался использовать getParam, но это не сработало.
import React, { useState } from 'react';
import { Text, TextInput, Button, View, StyleSheet, TouchableOpacity } from "react-native";
function CalcScreen({ navigation }) {
const [tot, setTot] = useState("0");
const ppl = navigation.getParam(num);
const Separator = () => (
<View style={styles.separator} />
);
return (
<View style={styles.container}>
<Text> num: {ppl} </Text>
<Text>Enter Total Amount:</Text>
<TextInput
returnKeyType="done"
keyboardType="numeric"
style={styles.input}
placeholder="e.g. 5.50"
onChangeText={(val1) => setTot(val1)}
/>
<Text> Total: {tot} </Text>
</View>
);
}
export default CalcScreen;
Любая помощь будет высоко оценена!
Комментарии:
1. Попробуйте использовать библиотеки управления состоянием, такие как
redux
.2. Откуда
navigation.navigate
берется? Я предполагаю, что react-navigation v5, но вы не отметили его. Я использовал его и никогда не сталкивался с проблемами с параметрами, вы читали их документ?3. В react navigation 5 навигация не содержит переданных параметров.
Ответ №1:
Когда происходит маршрутизация между экранами, вы можете получить значение num в CalcScreen
компоненте с помощью следующего кода:
function CalcScreen({ navigation, route }) {
const { num } = route.params;
Ответ №2:
-
Передайте параметры маршруту, поместив их в объект в качестве второго параметра функции navigation.navigate с первого экрана. Используя :
this.props.navigation.navigate(‘routeName’, { /* параметры идут сюда */ })
-
Прочитайте параметры на втором экране. Используя:
this.props.navigation.getParam(ParamName, defaultValue)
вот полный рабочий пример, ссылка
Ответ №3:
Использование props Мы используем props для передачи данных из одного класса в другой или с одной страницы на другую в react native.