Я использую вложенную навигацию (стек> ящик> вкладки), и мне нужно было перейти к текущему экрану внутри моего пользовательского компонента ящика, поэтому я использую его для этого:
const isKeyExistsOn = (o, k) => k.split(".").reduce((a, c) => a.hasOwnProperty(c) ? a[c] || 1 : false, Object.assign({}, o)) === false ? false : true;
const getScreenNameFromExactRoute = (exactRoute) => {
var tmp = JSON.parse(JSON.stringify(exactRoute));
while (true) {
if (isKeyExistsOn(tmp, "params"))
tmp = tmp.params;
else
return tmp.screen;
}
}
const getCurrentScreen = (props) => {
var lastscreen = props.state.history.filter(x => x.type === "route");
lastscreen = lastscreen[(lastscreen.length - 1)];
var exactRoute = props.state.routes.find(x => x.key === lastscreen.key);
if (exactRoute.name === "MyTabsDrawerSceneKey") {
if (!exactRoute.state)) {
return getScreenNameFromExactRoute(exactRoute);
} else
return getCurrentScreen(exactRoute);
}
else
return exactRoute.name;
}