React-native設置全局函數globle【適用於有組件嵌套時】

APP的首頁App.js裏,根據logFlag的值來判斷渲染的內容是登錄頁面還是首頁:
這裏寫圖片描述
以前的邏輯是在MyInfo.js文件裏的註銷按鈕裏設置isLogin爲false,然後跳轉到App.js,App.js判斷isLogin爲false,設置this.state.logFlag爲false,然後渲染出組件,即顯示出了登錄界面。

但是問題出現了,當在登錄界面登錄成功後,默認的邏輯是跳轉到App.js界面,然後App.js判斷已經登陸,然後渲染出TabBar,TabBar加載Task組件,這時會顯示2層TabBar。
原因是App.js渲染出了TabBar,TabBar加載了Task,但是實際上整個頁面還是在App組件裏,所以我們從App組件跳轉到了App組件,這樣以前的底部欄不會消失,所以會出現2個。

解決方案:

設置一個全局的登出函數:
這裏寫圖片描述
在其他頁面比如MyInfo.js裏的登出邏輯裏,直接調用logOut();然後就可以重新設置state,然後渲染原來的APP.js,而不是渲染新的APP.js。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章