3 回答

TA貢獻1851條經驗 獲得超5個贊
刪除組件DidUpdate(),因為刷新數據不依賴于屬性來獲取數據,并且沒有對 prevProps 和 newProps 進行任何檢查。
您可以從“添加”或“保存按鈕”回調中調用刷新數據方法。
我想象你正在保存模態代碼中的數據,添加 setState 回調。
模式保存數據,隱藏設置顯示狀態為 false,并從一次調用刷新數據。
let addModalClose = () => this.setState({addModalShow:false}, this.refreshData)

TA貢獻1946條經驗 獲得超4個贊
您正在調用執行某些操作,然后設置狀態。設置狀態后,調用函數,然后再次調用,設置無限循環。要使其正常工作,請從上一個進行比較,然后根據需要調用。this.refreshList();rendercomponentDidUpdatepropsthis.refreshList();
componentDidUpdate(prevProps) {
// Typical usage (don't forget to compare props):
if (this.props.depid !== prevProps.depid) { //Replace `depid` with the props you like to compare changes. If that is changed, then only call
this.refreshList();
}
}
您可以在組件DidUpdate()中立即調用 setState(),但請注意,它必須包裝在類似上例的條件下,否則將導致無限循環。它還會導致額外的重新渲染,雖然對用戶不可見,但會影響組件性能。如果你試圖將某種狀態“鏡像”到來自上面的道具,請考慮直接使用道具。閱讀更多關于為什么將道具復制到狀態會導致錯誤的信息。
查看文檔: https://reactjs.org/docs/react-component.html#componentdidupdate

TA貢獻1869條經驗 獲得超4個贊
問題是您正在調用組件加載和組件冗余更新。如文檔中所述:https://reactjs.org/docs/react-component.html#componentdidupdaterefreshList
您應該在某種條件下避免組件中的無限循環Did更新。
添加回答
舉報