首页 文章

在React Native中使用FlatList实现搜索栏

提问于
浏览
0

我正在开发一个由FlatList组成的React Native应用程序 . 我将这篇文章https://medium.com/react-native-development/how-to-use-the-flatlist-component-react-native-basics-92c482816fe6引用到我的应用程序中使用FlatList组件 .

我想实现搜索栏来搜索该列表的内容(使用每个项目的 Headers )并根据搜索文本自动呈现内容 . 如何在不使用任何库的情况下执行此操作?

谢谢你的帮助!

1 回答

  • 0

    使用npm install --save searchable-flatlist将库Searchable Flatlist安装在空文件夹中
    打开上面文件夹中创建的node_module文件夹,复制searchable-flatlist文件夹并粘贴到项目的node_module文件夹中

    然后按照以下代码片段进行操作:

    import SearchableFlatlist from "searchable-flatlist";
    import {Button, Input, Container, Header, Content, Card, CardItem, Body, Item, Icon} from 'native-base';
    
            export default class App extends Component {
            state = { searchTerm: "", data:"empty" };
    
            render() {  
            if(this.state.data== "empty"){
                return (
                  <View ><ActivityIndicator size="large" color="#0000ff" /> </View>
                      );
                  }
                  else{
            return (
    
            <View style={sContainer}>
                    <Card style={{backgroundColor: "#dddddda1"}}>
                    <Header searchBar rounded>
                      <Item>
                        <Icon name="ios-search" />
                        <Input placeholder="Search" 
                        onChangeText={searchTerm => this.setState({ searchTerm })}    
                        />
                        <Icon name="ios-people" />
                      </Item>
                      <Button transparent>
                        <Text>Search</Text>
                      </Button>
                    </Header>
    
                    <SearchableFlatlist
                      searchProperty={"email"}
                      searchTerm={this.state.searchTerm}
                      data={this.state.customersBox}
                      containerStyle={{ flex: 1 }}
                      renderItem={({ item }) => 
                       <ListItem
                        roundAvatar
                        title={`${item.name.first} ${item.name.last}`}
                        subtitle={item.email}
                        avatar={{ uri: item.picture.thumbnail }}
            +            containerStyle={{ borderBottomWidth: 0 }}
                      />  
            }
                 // item.name.first specifies the value to filter with
                      keyExtractor={item => item.name.first}
                      ItemSeparatorComponent={Separator}
                    />
                    </Card>
                  </View>
                );
        }
    }
    };
    

    您可能需要稍微修改一下代码 .

相关问题