React Native

[React-Native] 통합 검색 기능

sayhee 2023. 1. 3. 18:05
728x90

원래는 품명으로만 검색할 수 있도록 구현해놓았는데

이번에는 부품번호, 품명, 해쉬태그 등 모두 검색이 가능할 수 있도록 통합검색 기능을 구현해보았어요.


검색을 위한 함수 구현

//부품 검색
search = (value) => {
    this.setState({ goodsContent: this.dataFiltering(value) })
};

//필터링 (부품번호, 부품명 동시 검색)
dataFiltering = (value) => {
    let goodsContent = this.Contents;
    goodsContent = goodsContent.filter((content) => {
        if(value==='')
            return true;
        else {
            if(content.number===value)
                return true;
            if(content.name.includes(value))
                return true;
            if(content.hashTag.includes(value))
                return true;
        }
    });
    return goodsContent;
}

dataFiltering 함수에서 TextInput으로 입력받은 값을 전체 리스트( goodsContent) 에서 filter 함수를 통해 걸러줍니다.

value 값이 ' ' (null) 일 경우 전체값을 반환하고, 부품번호는 완벽히 일치할 경우, 이름과 해쉬태그는 특정 요소가 포함되어 있을경우 그 값들이 들어있는 리스트들을 반환해줍니다.

 

📍 Includes 함수란 ?

- 배열이 특정요소를 포함하고 있는지 판별해주는 함수

 

TextInput onChange를 통해 입력된 값을 Filtering

<TextInput
    onChange={(value) => this.search(value.nativeEvent.text)}
    placeholder="품명을 입력해주세요"
    placeholderTextColor="light grey"
    style={styles.input}
    value={this.state.number}
/>

TextInput의 속성인 onChange에서 search 함수를 호출해 입력된 값을 value로 전달해줍니다.