1 回答
TA贡献1797条经验 获得超4个赞
您正在使用 forEach 并将返回的值分配给变量,但不返回任何内容。您应该改用地图forEach
let municipiosNames = municipiosFromContext.map((municipio) => {
return `label: ${municipio.NOMBRE}`;
});
根据您的评论:
您的数据是异步加载的,因此在首次呈现时将不可用,并且由于功能组件依赖于闭包,因此 onSearchChange 函数在创建时从闭包中获取值,即使您其中有一个 setTimeout,更新的值也不会反映
这里的解决方案是添加为依赖项以使用效果municipiosFromContext
const onSearchChange = useCallback((searchValue) => {
setLoading(true);
setOptions([]);
clearTimeout(searchTimeout);
// eslint-disable-next-line react-hooks/exhaustive-deps
searchTimeout = setTimeout(() => {
// Simulate a remotely-executed search.
setLoading(false);
setOptions(
municipiosNames.filter((option) =>
option.label.toLowerCase().includes(searchValue.toLowerCase())
)
);
}, 1200);
}, [municipiosFromContext]);
useEffect(() => {
// Simulate initial load.
onSearchChange("");
}, [onSearchChange]);
添加回答
举报