最近新找了工作,使用RN開發(fā)新項(xiàng)目,學(xué)了10天的RN就分給我了一個很難很難的頁面,動態(tài)添加刪除組件的頁面,啊......就這個破東西搞了2天了還是有bug,怎么都想不明白,靜態(tài)的還懵懵的別說動態(tài)的組件了......唉厚著臉皮做吧......
第一版思路:既然是動態(tài)的,肯定要用到state,這是必須的啦,大致的思路就是把組件封裝起來,放到state的數(shù)組中,然后點(diǎn)擊?,在state的數(shù)組里面push一個組件,點(diǎn)擊?,在state的數(shù)組刪除對應(yīng)的組件就可以啦
呵呵呵,你以為這樣就可以了?!要是這么容易我能糾結(jié)兩天毫無進(jìn)展?!
shit!!!Bullshit!!!
這樣根本就不能實(shí)現(xiàn)我的頁面,雖然大致思路是對的,但是還是錯的!!!
OK,心平氣和的在想想吧
第二版思路:既然是動態(tài)的,肯定要用到state,這是必須的啦,大致思路就是state聲明一個數(shù)組,創(chuàng)建組件肯定需要一個唯一的標(biāo)識啦,所以在數(shù)組中要添加組件的ID,數(shù)組中有多少個ID ,就對應(yīng)的創(chuàng)建多少個組件,還有一點(diǎn)非常的重要,就是組件內(nèi)部的數(shù)據(jù)要和組件一一對應(yīng)起來,就是和組件的ID 一一對應(yīng)起來(如果數(shù)據(jù)在組件內(nèi)部操作,當(dāng)組件銷毀時,內(nèi)部的值還是存在的,貌似組件對內(nèi)部的值會有緩存,這就是我2天的坑位,大家不要和我搶),所以,組件內(nèi)部的值都要在外部操作,內(nèi)部需要什么值,就在state的數(shù)組中定義,傳過去,然后在組件內(nèi)部的改變方法中在把值回傳回去,改變state的值自然會更新組件內(nèi)部的值,這樣操作起來雖然麻煩,但是內(nèi)部的值和組件一一對應(yīng),避免了好多的坑。
上幾張代碼圖
在父組件中
在子組件中
回到父組件中操作
再上張gif