JavaScript 输入的查询字符串不接受 space 制表符而是字母

JavaScript input query string does not accept space tab but letter

我正在为我的应用程序使用 React-native typescript。我有一个 TextInput,用户可以在其中传递一些值 (letter/letters),该值将它传递给 Api 的查询字符串,并给出搜索结果。我制作了一个不接受任何 space 的辅助函数。它只接受 letter/letters.

我想制作需要 space 秒的辅助函数,但它只会在有 letter/letter 时触发。真的很难解释。但是我发现 Linkedin 有这种搜索过滤器,我想在我的应用程序中实现这种逻辑。但我不知道该怎么做。

这是我的代码

import debounce from 'lodash/debounce';
import React, { useState, useRef } from 'react';

const SearchScreen = () => {
  const [searchText, setSearchText] = useState('');
  const [searchedText, setSearchedText] = useState('');
  const delayedSearch = useRef(
    debounce((text: string) => {
      _search(text);
    }, 400),
  ).current;

  const _clearSearch = () => {
    if (searchText.length === 0) {
      Keyboard.dismiss();
    }
    setSearchText('');
    setSearchedText('');
  };

  const _search = (text: string) => {
    setSearchedText(text);
  };

  const removeExtraSpace = (s: string) => s.trim().split(/ +/).join(' '); // this is my helper function which does not accept white space

  const _onSearchChange = (text: string) => {
    setSearchText(removeExtraSpace(text)); // in here I am using the helper function
    delayedSearch(removeExtraSpace(text)); // in here I am using the helper function
  };

  return (
    <Container>
      <SearchBar
        text={searchText}
        onClearText={_clearSearch}
        onChangeText={_onSearchChange}
      />

      <ProductSearchResult
        queryString={searchedText} // in here I a passing Search
      />
    </Container>
  );
};

export default SearchScreen;

我错了。我的功能工作正常。但是我错误地将函数传递给了本地状态。

应该是这样的:

  const _onSearchChange = (text: string) => {
    setSearchText(text);
    delayedSearch(removeExtraSpace(text));
  };