我尝试从状态内的现有数组中按id获取一行数据,这是正确的方法吗?因为它一直在循环中执行该操作,我尝试执行类似的操作,但从API调用它,但出现类似的错误,我得到429 http错误,这意味着我一直在不停地调用API。
我试图获取一行,然后查看另一个组件的详细信息。
我的职能:
const getAnime = (id) => {
let filteredAnime = data.filter((item) => item.mal_id === id) //data is a state
console.log(filteredAnime)
setAnime(filteredAnime) //this is setting a state
};
按钮:
<Button title="Detail" onPress={getAnime(item.mal_id)} />
错误:
[错误:超过最大更新深度。当组件重复调用componentWillUpdate或componentDidUpdate内的setState时,可能会发生这种情况。React限制嵌套更新的数量以防止无限循环。] PayloadTooLargeError:请求实体太大
我还没有想到如何查看细节组件,正在考虑使用模态导航器,旁边的建议答案可能是好的,我仍然是新的React Native。
编辑:找到了一个更好的方法来传递值,而不需要使用state,我不知道它是否更好,但是如果它工作,不要碰它我只是从这个方法中传递flatlist中的renderItem作为param,然后在预期的组件上调用它们。https://reactnavigation.org/docs/params/
3条答案
按热度按时间7kqas0il1#
试着改变你传递函数给onPress的方式。从ReactJs的Angular 来说,应该是:
==〉获取动画图片(item.mal_id)} /〉
但是我想你可以把onClick改为onPress来适应你的用例。最重要的是把这个函数 Package 在一个回调中以避免多次调用。我希望它对你有用。
dy2hfwbg2#
你必须给这个函数一个回调函数
628mspwn3#
更改在按钮中调用函数的方式
这将使工作:)