[英]navigate,pop, reset in react native outside of react component using NavigationService
我將在react組件之外使用react navigation
,因此我無法訪問props,我可以通過它進行navigate
但是我不知道如何實現它以進行reset
並pop
這是我的navigate
代碼:
import {NavigationActions} from 'react-navigation';
let _navigator;
function setTopLevelNavigator(navigatorRef) {
_navigator = navigatorRef;
}
function navigate(routeName, params) {
_navigator.dispatch(
NavigationActions.navigate({
routeName,
params,
})
);
}
export default {
navigate,
setTopLevelNavigator,
};
在NavigationService中首次導入StackAction
import {
NavigationActions,
StackActions,
} from "react-navigation";
添加彈出和替換功能
function replace(routeName, params) {
_navigator.dispatch(
StackActions.replace({
routeName,
params
})
);
}
function pop(number = 1) {
_navigator.dispatch(
StackActions.pop({
n: number
})
);
}
注意:彈出窗口具有彈出多少個屏幕的參數。 默認值為1表示當前屏幕
這樣,您可以使用導航,彈出,重置:
refrence:
https://reactnavigation.org/docs/en/navigation-actions.html
https://reactnavigation.org/docs/en/navigation-actions.html
import {NavigationActions, StackActions} from 'react-navigation';
let _navigator;
function setTopLevelNavigator(navigatorRef) {
_navigator = navigatorRef;
}
function navigate(routeName, params) {
_navigator.dispatch(
NavigationActions.navigate({
routeName,
params,
})
);
}
function reset(routeName, params) {
const resetAction = StackActions.reset({
index: 0, actions: [NavigationActions.navigate({routeName, params})]
});
_navigator.dispatch(resetAction);
}
function pop(n = 1) {
const popAction = StackActions.pop({
n,
});
_navigator.dispatch(popAction);
}
export default {
navigate,
pop,
reset,
setTopLevelNavigator,
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.