Ошибка типа: this.props.navigation.getParam не является функцией при передаче параметра реагировать на нативный - PullRequest
1 голос
/ 14 апреля 2020

Я использую навигационную версию 5 и есть два экрана: домашний и поисковый, я хочу скопировать экран поиска значений на домашний экран, получая сообщение об ошибке Ошибка типа: 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 Ответ

1 голос
/ 14 апреля 2020

Если вы используете реагирующую навигацию V5, используйте:

props.route.params

Например:

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

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

  ...
}
...