我試圖通過 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: request entity too large
我還沒有想過如何查看詳細資訊組件,正在考慮使用模態導航器,答案旁邊的建議可能很好,我還是新手反應原生。
編輯:找到了一種更好的方法來傳遞值而無需使用狀態,我不知道它是否真的更好,但如果它有效,請不要觸摸它 我只是將平面串列中的 renderItem 作為引數傳遞方法,然后在預期的組件上呼叫它們。 https://reactnavigation.org/docs/params/
uj5u.com熱心網友回復:
嘗試更改將函式傳遞給 onPress 的方式。從 ReactJs 的角度來說,它應該是:
<Button title="Detail" onClick={() => getAnime(item.mal_id)} />
但我想您可以將 onClick 更改為 onPress 以適合您的用例。最重要的是將函式包裝在回呼中以避免多次呼叫。我希望這個對你有用。
uj5u.com熱心網友回復:
你必須給函式回呼
<Button title="Detail" onPress={()=>getAnime(item.mal_id)} />
uj5u.com熱心網友回復:
更改您在按鈕中呼叫函式的方式
<Button title="Detail" onPress={()=>getAnime(item.mal_id)} />
這將使作業:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/512257.html
