【发布时间】:2021-01-09 08:38:29
【问题描述】:
无法对未安装的组件执行 React 状态更新。这是一个空操作,但它表明您的应用程序中存在内存泄漏。要解决此问题,请在 useEffect 清理函数中取消所有订阅和异步任务。 在 PokemonListItem(在 PokemonList.jsx:148)
好的,我知道这是一个常见问题,解决方案应该很简单。我只是不知道如何在我的代码中实现它。
我正在使用 React-Native 和 PokéAPI 制作一种移动版 Pokédex。我不确定漏洞在哪里,请有经验的开发人员提供帮助。
口袋妖怪列表项
export default function PokemonListItem({ url, Favorite }) {
const [pokemondata, setData] = React.useState({});
const [dataReady, setReady] = React.useState(false);
const [isFavorite, setFavorite] = React.useState(false);
const favoriteStatus = (bool) => {
setFavorite(bool);
};
const getData = async () => {
await fetch(url)
.then((res) => res.json())
.then((data) => setData(data));
setReady(true);
};
React.useEffect(() => {
getData();
}, []);
more code...
口袋妖怪列表
const renderItem = ({ item }) => (
<TouchableHighlight
style={{ borderRadius: 10 }}
underlayColor="#ffc3c2"
onPress={() => {
navigation.navigate("Pokémon Details", {
url: item.url,
});
}}
>
<PokemonListItem url={item.url} Favorite={FavoriteButton} />
</TouchableHighlight>
);
如需查看完整代码,可访问repository。
【问题讨论】:
标签: javascript reactjs react-native