我有一個主要的ag網格用於我的反應app。當點擊一個按鈕(提供新數據)時,它會重新渲染。react:在第二次調用componentWillRecieveProps之後運行一個方法
我想添加一個初始過濾數據的預過濾器。所以我創建了創建我的預過濾器模型的新方法,然後應用它:
initialFilter(){
...
this.state.gridOptions.api.setFilterModel(myView);
this.state.gridOptions.api.onFilterChanged();
}
我知道,從測試這個工作(我叫上當選擇行使用的方法的方法和應用過濾器)。
問題是我在哪裏調用該方法?
把它放在componentWillRecieveProps導致無限循環(我假設由於上述兩行代碼)。
我只需要運行方法ONCE(每次點擊一個按鈕)。經過一番探索後,我注意到如果我添加一個計數器在
componentWillRecieveProps(){
...
if (counter <= 1){
this.initialFilter();
counter++;
}
}
這將工作。在第二次componentWillRecieveProps被調用後,預過濾似乎工作。不知道爲什麼,但我假設第一次呈現Ag網格,然後第二次,一旦網格呈現,運行我的方法將工作。 (如果我使用if語句條件'counter == 0',我不會看到我的Ag網格被過濾,我假設是因爲某些東西被覆蓋或者沒有要過濾的數據或者其他東西)
這很好一個按鈕被點擊第二個,第三個,等這個時間的方法將不再調用
我最初的計劃是按鈕的onclick改變一個新的布爾狀態變量,和我的IF語句的邏輯應該是:
'如果此狀態布爾值爲true,則等待第二次componentWillRecieveProps被調用,然後運行該方法,然後將布爾值設置爲相反的值'
任何人都可以提供一些建議嗎?
更優雅的解決方案發現:只需將它複製到shouldComponentUpdate並刪除計數器+內部if語句! – user3120554