reactjs - React Native UseEffect 卡在循环调用函数中
问题描述
我正在尝试根据用户的触摸事件更新状态,然后我使用 useEffect 尝试调用一个函数来更新另一个状态,以便可以使用导航将其传递到下一个屏幕。
问题是我陷入了一个循环,我不知道为什么。它应该只在selectedSet
更新时调用。
const [pokemonCards, setPokemonCards] = useState([]);
const [selectedSet, setSelectedSet] = useState("");
useEffect(() => {
const getPokemonCards = () => {
PokemonTCG.findCardsByQueries({ q: 'set.id:' + selectedSet, pageSize: 10 }).then(
(cards) => {
console.log("cards: ", cards)
setPokemonCards(cards);
}
)
}
getPokemonCards();
}, [selectedSet]);
...
<TouchableHighlight key={pokemonSet.id} onPress = {() => {
setSelectedSet(pokemonSet.id);
navigation.navigate("SetDetails", { setID: pokemonSet.id, pokemonSetDetails: pokemonSet, pokemonCards: pokemonCards });
}}>
解决方案
“useEffect”重新获取 pokemon 卡片,创建新的 pokemontSet 对象,该对象使用“新”选定的 pokemonSet.id 重新渲染对象。并且由于 selectedId 已更改,因此会触发效果。
推荐阅读
- java - 使用 Spring Data R2DBC 进行批量插入时检索生成的 ID
- oauth-2.0 - Google Oauth2 应用程序类型 Web 服务器与桌面应用程序?
- java - 你如何只在一个 int 数组中排序奇数而将偶数留在原来的位置?
- firebase - React Native:将所有图像从 Firebase 存储下载到平面列表中
- maven - Liquibase:如何执行您想要的变更集?
- azure - 邮递员中的 Azure 翻译器 api 调用错误
- arrays - 有没有办法将数组的元素与 Ruby 中的哈希键匹配?
- docker - 从同一个堆栈中的另一个服务以主机网络模式访问服务
- vb.net - 如何更改此文本区域的值?
- build - 角度:node_modules/@types/babel _traverse/index.d.ts(1137,43):错误 TS1109:预期表达式