document.defaultView 返回window對(duì)象 document.ownerDocument Node.ownerDocument 只讀屬性會(huì)返回當(dāng)前節(jié)點(diǎn)的頂...
document.defaultView 返回window對(duì)象 document.ownerDocument Node.ownerDocument 只讀屬性會(huì)返回當(dāng)前節(jié)點(diǎn)的頂...
你好,對(duì)于goback指定routeName,以及stackNavigator防止重復(fù)跳轉(zhuǎn),我有不同的看法,還望指教,謝謝。
我不是很贊同修改源碼來(lái)實(shí)現(xiàn)自己的功能,除非迫不得已,react-navigation官方提供了對(duì)路由攔截的方法,在https://reactnavigation.org/docs/routers/#Customizing-Routers中有描述。
因此我覺(jué)得通過(guò)攔截來(lái)自定義路由行為是可行的。
指定routeName來(lái)goBack和防止重復(fù)navigate的代碼如下:
```
function routeIsInCurrentState(state: Object, routeName: string) {
if(state && state.routeName === routeName) {
return true
}
if(state && state.routes) {
return routeIsInCurrentState(state.routes[state.index], routeName)
}
return false
}
const defaultGetStateForAction = MyApp.router.getStateForAction;
MyApp.router.getStateForAction = (action, state) => {
if (state && action.type === NavigationActions.Back && action.routeName) {
//這里可以自己在外部自定義一個(gè)ActionType,然后判斷是否是自定義的ActionType
const backRoute = state.routes.find((route: *) => route.routeName === action.routeName);
if (backRoute) {
const backRouteIndex = state.routes.indexOf(backRoute);
const route = {
...state,
routes: state.routes.slice(0, backRouteIndex + 1),
index: backRouteIndex,
};
return route
}
}
if (state && action.type === NavigationActions.Navigate) {
if(routeIsInCurrentState(state, action.routeName)) {
//避免重復(fù)跳轉(zhuǎn)
return state
}
}
return defaultGetStateForAction(action, state)
};
```
如果react-navigation配合redux使用,那么在reducer里面就可以直接攔截action,做如上自定義操作了。
還望指教,謝謝。
羽紗 評(píng)論自react-navigation使用技巧
前言 眾所周知,現(xiàn)在App的競(jìng)爭(zhēng)已經(jīng)到了用戶體驗(yàn)為王,質(zhì)量為上的白熱化階段。用戶們都是很挑剔的。如果一個(gè)公司的推廣團(tuán)隊(duì)好不容易砸了重金推廣了一個(gè)APP,好不容易有了一些用戶,...
概念 公鑰和私鑰都可以用來(lái)加密數(shù)據(jù),相反用另一個(gè)解開(kāi)。公鑰加密數(shù)據(jù),然后私鑰解密的情況被稱為 加密解密。私鑰加密數(shù)據(jù),公鑰解密一般被稱為 簽名和驗(yàn)證簽名。 非對(duì)稱加密算法 R...
所謂熱更新就是在不重新安裝的前提下進(jìn)行代碼和資源的更新,相信在整個(gè)宇宙中還不存在覺(jué)得熱更新不重要的程序猿。 增量熱更新就更牛逼了,只需要把修改過(guò)和新增的代碼和資源推送給用戶下...
以下是本人在React Native開(kāi)發(fā)工作中使用的一些小技巧,記錄一下。 1.從網(wǎng)絡(luò)上拉取下來(lái)的React Native缺少React和React Native庫(kù).終端 2...
listView use build in ListView, IOS use overflow: hidden use react-native-table-view wh...
build package change AppDelegate.m copy main.jsbundle file to XCode project notice: sel...