axios 按id获取数据,然后将其存储在状态中

nqwrtyyt  于 2022-11-05  发布在  iOS
关注(0)|答案(3)|浏览(121)

我尝试从状态内的现有数组中按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/

7kqas0il

7kqas0il1#

试着改变你传递函数给onPress的方式。从ReactJs的Angular 来说,应该是:
==〉获取动画图片(item.mal_id)} /〉
但是我想你可以把onClick改为onPress来适应你的用例。最重要的是把这个函数 Package 在一个回调中以避免多次调用。我希望它对你有用。

dy2hfwbg

dy2hfwbg2#

你必须给这个函数一个回调函数

<Button title="Detail" onPress={()=>getAnime(item.mal_id)} />
628mspwn

628mspwn3#

更改在按钮中调用函数的方式

<Button title="Detail" onPress={()=>getAnime(item.mal_id)} />

这将使工作:)

相关问题