Ошибка при отправке данных с this.props.Navigation.navigate реагирует на родную - PullRequest
1 голос
/ 23 октября 2019

Я отправляю идентификатор пользователя в навигации, но я не могу получить идентификатор на странице сведений. Вот мой код ...

<FlatList
          style={{ paddingLeft: 5 }}
          data={this.state.TopRatedData}
          ListEmptyComponent={this._listEmptyComponent}
          keyExtractor={(x, i) => i.toString()}
          renderItem={({ item }) =>
            <TouchableOpacity
              activeOpacity={0.9}
              onPress = { () => this.props.navigation.navigate("DetailDoctorscreen", {doc_id: item.ID})
              }>
              <TopRatedCard
              profileImage={{ uri: `${item.image}` }}
              specialities={`${entities.decode(item.specialities.name)}`}
              name={`${entities.decode(item.name)}`}
              sub_heading={`${entities.decode(item.sub_heading)}`}
              total_rating={`${entities.decode(item.total_rating)}`}
              average_rating={`${entities.decode(item.average_rating)}`}
              />
            </TouchableOpacity>

В приведенном выше коде я отправляю doc_id, но яЯ не могу получить его на DetailDoctorscreen. вот код ...

fetchDoctorDetail = async () => {
    const { params } = this.props.navigation.state;
    console.log(this.props.navigation.state.doc_id);
    const response = await fetch(
      CONSTANT.BaseUrl +
      "listing/get_doctor?profile_id=" + this.props.navigation.state.doc_id
    );
    const json = await response.json();
    Alert.alert(CONSTANT.BaseUrl +
      "listing/get_doctor?profile_id=" + this.props.navigation.state.doc_id);
    this.setState({ fetchDoctor: json });
  };

после использования getParams ...

fetchDoctorDetail = async () => {
    const { params } = this.props.navigation.state;
    console.log(this.props.navigation.state.doc_id);
    const response = await fetch(
      CONSTANT.BaseUrl +
      "listing/get_doctor?profile_id=" + this.props.navigation.getParam('doc_id')
    );
    const json = await response.json();
    Alert.alert(CONSTANT.BaseUrl +
      "listing/get_doctor?profile_id=" + this.props.navigation.getParam('doc_id'));
    this.setState({ fetchDoctor: json });
  };

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Вы получаете доступ к переменной param из объекта состояния навигации вместо объекта params. Попробуйте следующее:

const { params } = this.props.navigation.state;
console.log('doc id =',params.doc_id);
0 голосов
/ 23 октября 2019

Попробуйте

this.props.navigation.getParam('doc_id');

изменить: перейдите сюда для получения дополнительной информации: https://reactnavigation.org/docs/en/navigation-prop.html#getparam-get-a-specific-param-value-with-a-fallback

Дополнительные пояснения:

Получите параметр в пределах componentDidMount, затем передайтеdocId var в функцию fetchDoctorDetail.

Что-то вроде:

async componentDidMount() {
  const docId = this.props.navigation.getParam('doc_id');
  await this.fetchDoctorDetail(docId);
}

async fetchDoctorDetail = async(docId) => {
  // do all your stuff here.
}

обратите внимание, что этот код не проверен

...