2 回答

TA貢獻1858條經(jīng)驗 獲得超8個贊
componentDidMount
您正在構(gòu)造函數(shù)中調(diào)用生命周期方法,您不應(yīng)該那樣做。
這是問題所在:
this.componentDidMount = this.componentDidMount(this);
如果您在 中執(zhí)行此操作constructor
,您會收到該警告,React 會告訴您該組件尚未安裝,但您已經(jīng)setState
通過手動調(diào)用componentDidMount
.
在您的情況下,構(gòu)造函數(shù)尚未完成執(zhí)行,并且組件沒有機會安裝到 DOM 上。一旦構(gòu)造函數(shù)被執(zhí)行,組件就被初始化,然后組件被實際掛載到 DOM 上。
安裝組件后,你的生命周期方法componentDidMount
將由 React 以適當?shù)纳舷挛恼{(diào)用(因此不需要調(diào)用bind
on componentDidMount
),然后在那個時間點你應(yīng)該調(diào)用setState
來改變組件的狀態(tài)。
您也可以刪除_isMounted
與該財產(chǎn)形式相關(guān)的 和檢查componentDidMount
,componentWillUnmount
因為它不是必需的。

TA貢獻1827條經(jīng)驗 獲得超8個贊
componentDidMount 是一種生命周期方法,不需要在構(gòu)造函數(shù)中進行初始化。刪除它以避免警告。
constructor(props){
super(props);
this.state = {list:[], itemCounter: 0};
this.addItem = this.addItem.bind(this);
this.handleDone = this.handleDone.bind(this);
this.componentDidMount = this.componentDidMount(this); // remove this, componentDidMount is a lifecycle method.
}
添加回答
舉報