react的一些思考
在做好第一個需求之后,我接到了一個react寫的產品,這讓我異常的興奮,終于能寫react了
開始做的時候整體框架已經搭建好了,這讓我有點小失落,我還以為我要開始搭框架了呢,沒事,搭的也挺好的。
有了angular和vue的基礎,react上手也不是哥事,但是看了兩天的api,感覺還是沒入門,直接寫項目代碼吧,忐忑不安的就這樣去寫了,果然遇到了大坑。
antdui的坑,form表單必須通過阿里提供的api才能改變input框里的值,用就用吧,但是不能在生命周期里用,因為那樣會觸發下次的生命周期,會造成死循環。
但是我想在父組件里點擊后改變input里的值啊,最初想著可以用props傳入,然后在willmount的時候調用,把input框里的值set進去,但是會死循環。
昨天搞到半夜,回家里,晚上做個夢,解決了,為啥要用props傳啊,為啥要在生命周期里調用啊,子組件根據form的api提供一個改變input值的方法,然后,父組件調用子組件里的方法不就行了,然后,不用props,不用生命周期。
再然后,我掉入了另一個坑,竟然找不到子組件的方法,查了半天,想起來了,子組件是有生命周期的,直接調用的話,人家還沒有加載這個方法所以沒有,這就引出了另一個問題,我怎么知道子組件是否渲染完了呢,vue里有this.$nextTick( ()=>{} ),查了react的官方文檔,查了半天,沒有這個方法,那就自己模仿把,其實很簡單,setTimeout就行,promise也行,我用的setTimeout,ok,解決了,完美手工。
?
ps:關于父組件怎樣調用子組件的方法,可以這樣做,父組件通過props傳遞一個function給子組件,子組件將要渲染的時候,調用父組件的方法把子組件的上下文傳遞給父組件,父組件保存this值,然后在父組件里就可以開心的調用了,這里有個問題,是必須得確保子組件渲染后調用,如果保證不了,是找不到子組件的上下文的。
?
轉載于:https://www.cnblogs.com/windseek/p/9362347.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的react的一些思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git篇
- 下一篇: 增强型for和Iterator学习