我正在使用导航版本5,有两个屏幕的主屏幕和搜索屏幕,我想将值搜索屏幕复制到主屏幕,但出现错误 TypeError:props.navigation.getParam不是函数。
搜索屏幕
async savechange() {
this.props.navigation.navigate('HomeScreen', { city: this.state.text })
await AsyncStorage.setItem("cityname", this.state.text)
}
async clicklist(name) {
this.setState({ text: name })
await AsyncStorage.setItem("cityname", this.state.text)
this.props.navigation.navigate('HomeScreen', { city: this.state.text })
}
主屏幕
async getWeather() {
// cityname = "london"
cityname = this.props.navigation.getparam('cityname','london')
console.log("CityName ->>" + cityname)
KeyID = '...'
fetch(`http://api.openweathermap.org/data/2.5/weather?q=${cityname}&units=metric&APPID=${KeyID}`)
.then(result => result.json())
.then(data => {
// console.log(data)
this.setState({
info: {
name: data.name,
temp: data.main.temp,
country: data.sys.country,
humidity: data.main.humidity,
description: data.weather[0].description,
icon: data.weather[0].icon
}
})
}).catch(err => {
Alert.alert("Error" + err.message + "Please connect to internet", [{ text: "Ok" }])
})
}
答案 0 :(得分:1)
如果您使用的是反应导航V5,请使用:
props.route.params
例如:
props.navigation.navigate("ScreenB", {title: "Hello World"});
_________________________________________________________________
export default function ScreenB(props){
useEffect(() => {
setTitle(props.route.params.title);
},[])
...
}