我正在尝试制作一个基本的应用程序,它使用React Navigation来搜索电影并显示列表。在我的"主"屏幕中,它显示一个输入文本框,我在其中输入一部电影,在另一个屏幕中,使用omdb API显示结果。
我的问题是如何从主屏幕-->应用程序-->Api 传递信息
我能想到的是,这将与screenProps相反,但我不知道它将如何实现。
这是一些伪代码,用来显示我的想法。
Main Screen
<TextInput onChangeText = {set App State}
App
state = {
what was passed by Main Screen
}
<App NAvigator screenProps = {whats the APi returns after its sent the state} />
Api
Takes whats in the App State and returns the film array
Movie Details
Takes the film array passed as a screenProp in App and turns it into a list of films.
您将传递另一个作为回调函数的道具。不确定你的代码是什么样子的,但一个例子是:
在主屏幕中:
// on the click of the search button
fetch("myserver.com/search", {
method: "POST",
body: JSON.stringify({
search: this.state.inputText
})
})
.then(response => response.json())
.then(apiResults => {
this.navigate("MovieList", {
list: apiResults,
onMovieSelected: (selectedMovie) => {
console.log("User selected a movie "+selectedMovie.title);
}
}
}
)
在您的电影列表中:
// after a user chooses a movie
props.navigation.state.params.onMovieSelected(selectedMovie)