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));
};
我正在为我的应用程序使用 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));
};