기존 데이터의 제목 또는 내용을 입력 후 검색 버튼을 누르면 내가 원하는 제목이나 내용을 포함하는 필터링된 데이터를 얻고 싶었다.
// 데이터
const [data, setData] = useState([]);
// 검색창
const [inputValue, setInputValue] = useState('');
// 검색 결과 필터링 된 데이터
const [filteredData, setFilteredData] = useState([]);
return (
<>
<input
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
</>
);
const filteredSearchData = data.filter(
(item) =>
item.제목.includes(inputValue) ||
item.내용.includes(inputValue)
);
const handleSearch = () => {
setFilteredData(filteredSearchData);
console.log('검색 결과: ', filteredData);
};
...
return (
<>
<input
type="text"
value={inputValue}
onChange={(e) => setInputValue(e.target.value)}
/>
<button onClick={handleSearch}>검색</button> // 추가
</>
);
const handleSearch = () => {
const filteredSearchData = data.filter(
(item) =>
item.제목.includes(inputValue) ||
item.내용.includes(inputValue)
);
setFilteredData(filteredSearchData);
console.log('검색 결과: ', filteredData);
};
const handleSearch = () => {
if (!inputValue) {
alert('검색어 입력 후 버튼을 클릭해주세요.');
return;
}
const filteredData = data.filter(
(item) =>
item.제목.includes(inputValue) ||
item.내용.includes(inputValue)
);
if (filteredData.length === 0) {
alert('검색 결과가 없습니다.');
return;
}
setFilteredData(filteredSearchData);
console.log('검색 결과: ', filteredData);
};
if (!inputValue.trim()) {
alert('검색어 입력 후 버튼을 클릭해주세요.');
return;
}