Как выполнить функцию щелчка по элементу плоского списка в React Native - PullRequest
1 голос
/ 23 мая 2019

Я получаю список данных, и я хочу отображать детали каждого из данных, когда кликаю по любому элементу плоского списка, вот мой код.

 <FlatList style={{paddingBottom:5}}
          data = {this.state.fetchFreelancer}
          keyExtractor={(y, z) => z.toString()}
          renderItem={({ item }) =>

          <FreelancerCategory

          imageUrifreelancer = {{uri: `${item.profile_img}`}}
          imageUrifeatured = {{uri: `${item.badge.badget_url}`}}
          featuredColor ={`${entities.decode(item.badge.badget_color)}`}
          flagimageUri= {{uri: `${item.location.flag}`}}
          freelancername={`${entities.decode(item.name)}`}
          title={`${entities.decode(item._tag_line)}`}
          rate={`${entities.decode(item._perhour_rate)}`}
          country={`${entities.decode(item.location._country)}`}
          /> 

Но я не могу выполнить onPress в плоском списке, может кто-нибудь, пожалуйста, помогите мне в этом. Спасибо

Не работает ..

<FlatList
                style={{ paddingBottom: 5 }}
                data={this.state.fetchFreelancer}
                keyExtractor={(y, z) => z.toString()}
                renderItem={({ item }) => (
                  <TouchableOpacity
                 onPress={() => navigate('DetailFreelancerScreen', {profile_id: item.profile_id})}
                //  onPress={() => alert('Item pressed')}
                  >
                    <FreelancerCategory
                      imageUrifreelancer={{ uri: `${item.profile_img}` }}
                      imageUrifeatured={{ uri: `${item.badge.badget_url}` }}
                      featuredColor={`${entities.decode(
                        item.badge.badget_color
                      )}`}
                      flagimageUri={{ uri: `${item.location.flag}` }}
                      freelancername={`${entities.decode(item.name)}`}
                      title={`${entities.decode(item._tag_line)}`}
                      rate={`${entities.decode(item._perhour_rate)}`}
                      country={`${entities.decode(item.location._country)}`}
                    />
                  </TouchableOpacity>
                )}
              />

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Если вы хотите выполнить события клика, вы должны покрыть свои элементы TouchableOpacity или TouchableWithoutFeedback.

<FlatList 
    style={{paddingBottom:5}}
    data = {this.state.fetchFreelancer}
    keyExtractor={(y, z) => z.toString()}
    renderItem={({ item }) => (
        <TouchableOpacity
           onPress={() => this.props.navigation.navigate('DetailFreelancerScreen', 
               {profile_id: item.profile_id})}
        >
           <FreelancerCategory
             imageUrifreelancer = {{uri: `${item.profile_img}`}}
             imageUrifeatured = {{uri: `${item.badge.badget_url}`}}
             featuredColor ={`${entities.decode(item.badge.badget_color)}`}
             flagimageUri= {{uri: `${item.location.flag}`}}
             freelancername={`${entities.decode(item.name)}`}
             title={`${entities.decode(item._tag_line)}`}
             rate={`${entities.decode(item._perhour_rate)}`}
             country={`${entities.decode(item.location._country)}`}
          /> 
       </TouchableOpacity>
      );
  />

для получения дополнительной информации см. Официальный документ RN

0 голосов
/ 23 мая 2019

пожалуйста, прочитайте это https://facebook.github.io/react-native/docs/flatlist. Эта статья поможет вам правильно использовать компонент FlatList. Надеюсь, это поможет

...