Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用钩子输入搜索过滤器数组_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 使用钩子输入搜索过滤器数组

Javascript 使用钩子输入搜索过滤器数组,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我想使用react钩子对数组进行过滤。这应该是一个相当直接的任务,但我假设这与异步更新挂钩有关,尽管这可能是错误的 我被难倒了,但我在下面列出了一个示例和我的代码: const teams_data = [ "tottenham", "arsenal", "man utd", "liverpool", "chelsea", "west ham" ]; function App() { const [teams, setTeams] = React.useState(

我想使用react钩子对数组进行过滤。这应该是一个相当直接的任务,但我假设这与异步更新挂钩有关,尽管这可能是错误的

我被难倒了,但我在下面列出了一个示例和我的代码:

const teams_data = [
  "tottenham",
  "arsenal",
  "man utd",
  "liverpool",
  "chelsea",
  "west ham"
];

function App() {
  const [teams, setTeams] = React.useState(teams_data);
  const [search, setSearch] = React.useState("");

  return (
    <div className="App">
      <input
        onChange={e => {
          const test = teams.filter(team => {
            return team.toLowerCase().includes(e.target.value.toLowerCase());
          });
          console.log("test: ", test);

          // uncomment line below and teams is logged as I want
          setTeams(test);
          setSearch(e.target.value);
        }}
        type="text"
        value={search}
      />
      {teams.map(team => (
        <p>{team}</p>
      ))}
    </div>
  );
}
const团队\u数据=[
“托特纳姆”,
“阿森纳”,
“曼联”,
“利物浦”,
“切尔西”,
“西汉姆”
];
函数App(){
const[teams,setTeams]=React.useState(teams\u数据);
const[search,setSearch]=React.useState(“”);
返回(
{
const test=teams.filter(团队=>{
return team.toLowerCase().includes(e.target.value.toLowerCase());
});
日志(“测试:”,测试);
//取消下面的注释行,团队按我的要求记录
SETTAMS(测试);
设置搜索(如目标值);
}}
type=“text”
值={search}
/>
{teams.map(team=>(
{团队}

))} ); }
您需要过滤原始数据:

  const test = teams_data.filter(team => {
    return team.toLowerCase().includes(e.target.value.toLowerCase());
  });

您需要过滤原始数据:

  const test = teams_data.filter(team => {
    return team.toLowerCase().includes(e.target.value.toLowerCase());
  });

您只需为搜索结果添加另一个状态即可

    const [data , setData] = useState(teams);
    const [query, setQuery] = useState('')
    const[res , setRes] = useState([]);
    return (
      <div className="App container">
          <form onSubmit = {(e) => e.preventDefault()}>
              <input type = "search" className = "srh" placeholder = "search about..." 
              onChange = {(e) => {
                const test = data.filter(team => {
                  return (
                    team.toLowerCase().includes(e.target.value.toLowerCase())
                  )
                })
                setRes(test)
                if(e.target.value === '') setRes([])
              }}
              />
          </form>
          <div>
          {
            res.map((item , i) => (
            <p key = {i}>{item}</p>
            ))
          }
          </div>
      </div>
    );
const[data,setData]=useState(团队);
const[query,setQuery]=useState(“”)
常数[res,setRes]=useState([]);
返回(
e、 preventDefault()}>
{
const test=data.filter(团队=>{
返回(
team.toLowerCase()包括(e.target.value.toLowerCase())
)
})
setRes(测试)
如果(e.target.value=='')setRes([])
}}
/>
{
res.map((项目,i)=>(

{item}

)) } );
您只需为搜索结果添加另一个状态即可

    const [data , setData] = useState(teams);
    const [query, setQuery] = useState('')
    const[res , setRes] = useState([]);
    return (
      <div className="App container">
          <form onSubmit = {(e) => e.preventDefault()}>
              <input type = "search" className = "srh" placeholder = "search about..." 
              onChange = {(e) => {
                const test = data.filter(team => {
                  return (
                    team.toLowerCase().includes(e.target.value.toLowerCase())
                  )
                })
                setRes(test)
                if(e.target.value === '') setRes([])
              }}
              />
          </form>
          <div>
          {
            res.map((item , i) => (
            <p key = {i}>{item}</p>
            ))
          }
          </div>
      </div>
    );
const[data,setData]=useState(团队);
const[query,setQuery]=useState(“”)
常数[res,setRes]=useState([]);
返回(
e、 preventDefault()}>
{
const test=data.filter(团队=>{
返回(
team.toLowerCase()包括(e.target.value.toLowerCase())
)
})
setRes(测试)
如果(e.target.value=='')setRes([])
}}
/>
{
res.map((项目,i)=>(

{item}

)) } );
出于兴趣,为什么要过滤原始数组?如果愿意,请随意回答此处-出于兴趣,为什么要过滤原始数组?如果愿意,请随意回答此处-