获取和传递参数在反应导航



On按下一个按钮,我需要将参数传递给另一个屏幕,在那里获取该按钮的值,代码如下;

屏幕:1

<TouchableOpacity
onPress={() => navigation.navigate("Quiz", { fetch: "history" })}
style={styles.button}
>
<Text style={styles.buttonText}>History</Text>

</TouchableOpacity>

屏幕:2

const Quiz = ({ navigation, route }) => {
const { fetch } = route.params;
const getQuiz = async () => {
setIsLoading(true);
const url = `https://herokuapp.com/q/${fetch}`;
const res = await fetch(url);
const data = await res.json();
setQuestions(data.results);
setOptions(generateOptionsAndShuffle(data.results[0]));
setIsLoading(false);
};

但是在抓取过程中,我得到以下错误

[Unhandled promise rejection: TypeError: fetch is not a function. (In 'fetch(url)', 'fetch' is "history")]

我试过使用timeout,但是不工作,有没有更好的选择

问题是fetch是javascript中的本地函数(见这里)。

您应该将参数重命名为另一个名称,如quizz

屏幕:1

<TouchableOpacity
onPress={() => navigation.navigate("Quiz", { quizz: "history" })}
style={styles.button}
>
<Text style={styles.buttonText}>History</Text>
</TouchableOpacity>

屏幕:2

const Quiz = ({ navigation, route }) => {
const { quizz } = route.params;
const getQuiz = async () => {
setIsLoading(true);
const url = `https://herokuapp.com/q/${quizz}`;
const res = await fetch(url);
const data = await res.json();
setQuestions(data.results);
setOptions(generateOptionsAndShuffle(data.results[0]));
setIsLoading(false);
};

最新更新