【发布时间】:2020-08-28 09:59:38
【问题描述】:
我正在尝试做的事情:当在搜索栏中输入内容时,未搜索的用户名必须淡出并消失(效果很好),我试图在搜索栏中的字母被删除或搜索栏被清除。
App.js
import React, { useState, useEffect } from "react";
import SearchBar from "./SearchBar";
import "./App.scss";
const users = [
{ name: "Jack", id: "1" },
{ name: "Lisa", id: "2" },
{ name: "Peter", id: "3" },
{ name: "Roman", id: "4" },
{ name: "Sarah", id: "5" },
{ name: "Eric", id: "6" },
{ name: "Fiora", id: "7" },
];
function App() {
const [searchValue, setSearchValue] = useState("");
const [searchFilter, setSearchFilter] = useState(users);
return (
<div className="App">
<h2>Search</h2>
<SearchBar onSearch={setSearchValue} value={searchValue} />
<ul className="users">
{searchFilter.map((user) => {
let classname =
user.name.toLowerCase().indexOf(searchValue.toLowerCase()) === -1 &&
"hide";
return (
<li className={`user ${classname}`} key={user.id}>
{user.name}
</li>
);
})}
</ul>
</div>
);
}
export default App;
搜索栏.js
import React from "react";
function SearchBar(props) {
const handleSearch = (e) => {
props.onSearch(e.target.value);
};
return <input type="text" onChange={handleSearch} value={props.value} />;
}
export default SearchBar;
App.scss
.user {
list-style: none;
}
.hide {
animation: fade-out 1s ease-out forwards;
}
@keyframes fade-out {
0% {
opacity: 1;
}
50% {
opacity: 0;
height: inherit;
padding: inherit;
}
100% {
opacity: 0;
height: 0;
padding: 0;
}
}
所以基本上我只是想在用户删除搜索栏中的字母时反转动画。
【问题讨论】:
标签: javascript css reactjs sass