TypeError:传递参数反应本机时,this.props.navigation.getParam不是函数

时间:2020-04-14 19:29:21

标签: react-native react-native-android

我正在使用导航版本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" }])
      })
  }

1 个答案:

答案 0 :(得分:1)

如果您使用的是反应导航V5,请使用:

props.route.params

例如:

props.navigation.navigate("ScreenB", {title: "Hello World"});
_________________________________________________________________

export default function ScreenB(props){
  useEffect(() => {
    setTitle(props.route.params.title);
  },[])

  ...
}