【发布时间】:2020-03-03 04:53:13
【问题描述】:
我正在为输入进行自动完成。我有一个调用queryText 函数onChangeText 的输入。 queryText 接收一个字符串和一个数组,它使用与传递的字符串匹配的字符串创建一个新数组并更新状态。问题是我的状态更新较晚。
在下面的代码中,如果我输入字母“w”,我会返回整个 poi 数组,而不仅仅是 walmart。但是,如果我在只得到 walmart 之后输入“b”(我应该什么也得不到)。如果我删除“b”,我会得到一个空数组(我应该得到 walmart)。我的自动完成状态似乎是 1 个按键。
export default function IndoorForm() {
const poi = ["test1", "test2", "test3", "walmart"]
const [value, onChangeText] = React.useState('');
const [autocomplete, setAutocomplete] = React.useState([...poi]);
const [query, setQuery] = React.useState('');
const queryText = (text, poi) => {
let sanitizedText = text.toLowerCase();
const queryResult = poi.filter(location => location.includes(sanitizedText) !== false);
setAutocomplete([...queryResult]);
onChangeText(text);
console.log("-----New Text----")
console.log(queryResult); //this is displaying the correct array
console.log(text);
console.log(autocomplete); //this value is 1 behind what is expected
}
return (
<TextInput
key={autocomplete}
style={styles.input}
onChangeText={text => queryText(text, poi)}
value={value}
/>
);
}
【问题讨论】:
标签: javascript html reactjs react-native