next.js 搜索未返回匹配结果

balp4ylt  于 2023-03-08  发布在  其他
关注(0)|答案(1)|浏览(123)
const searchClientes = (e) => {
  if (e.target.value === '') {
    getClientes();
    return;
  } else {
    const search = e.target.value;

    const filteredClientes = clientes.filter(clientes => {
       return clientes.nome.toLowerCase().includes(search.toLowerCase()) || 
                clientes.email.toLowerCase().includes(search.toLowerCase());
      })
    setClientes(filteredClientes);
  }
}

在这段代码中,如果我删除了一个字符或多个字符,函数不会返回匹配结果。只有当我删除所有内容时,才会显示所有客户端。如果我从搜索中删除了一些内容,有人可以给予我一些匹配结果的解决方案吗?

wgx48brx

wgx48brx1#

这里可以使用去抖动功能,该功能在一定延迟后调用
只需将debouncedSearchClientes函数添加到输入元素

const debounce = (fn, delay) => {
  let timeoutId;
  return function (...args) {
    if (timeoutId) {
      clearTimeout(timeoutId);
    }
    timeoutId = setTimeout(() => {
      fn(args);
    }, delay);
  };
}

const searchClientes = (e) => {
  const search = e.target.value;
  const filteredClientes = clientes.filter((clients) => {
    return (
      clients.nome.toLowerCase().includes(search.toLowerCase()) ||
      clients.email.toLowerCase().includes(search.toLowerCase())
    );
  });
  setClientes(filteredClientes);
};

const debouncedSearchClientes = debounce(searchClientes, 750);

相关问题