YAl*_*lan 10 javascript deep-linking reactjs react-native react-navigation
在反应本机上,我想在触发深度链接时打开一个模式并保留初始堆栈。
当应用程序处于前台或后台时它可以工作。
但是,当应用程序处于非活动状态并且深度链接被触发时,仅存在 AddStack。我无法关闭模式(TakePicture)并显示 MainStack(购买)。
如何将 MainStack 保持在模态后面?
我的深层链接是 app_scheme://purchases/purchase/new/:purchaseId
function App() {
const ref = useRef();
const logged = useSelector((state) => state.user.logged);
const { getInitialState } = useLinking(ref, {
prefixes: ['app_scheme://'],
config: {
AddStack: {
screens: {
TakePicture: {
path: 'purchases/purchase/new/:purchaseId',
parse: {
purchaseId: Number,
},
},
},
},
},
});
const [isReady, setIsReady] = useState(false);
const [initialState, setInitialState] = useState();
React.useEffect(() => {
Promise.race([
getInitialState(),
new Promise((resolve) =>
// Timeout in 150ms if `getInitialState` doesn't resolve
// Workaround for https://github.com/facebook/react-native/issues/25675
setTimeout(resolve, 150),
),
])
.catch((e) => {
console.error(e);
})
.then((state) => {
if (state !== undefined) {
setInitialState(state);
}
setIsReady(true);
});
}, [getInitialState]);
if (!isReady) {
return null;
}
return (
<NavigationContainer initialState={initialState} ref={ref}>
{logged ? <RootStack /> : <AuthStack />}
</NavigationContainer>
);
}
Run Code Online (Sandbox Code Playgroud)
function RootStack() {
return (
<Stack.Navigator mode="modal" initialRouteName="MainStack">
<Stack.Screen
name="MainStack"
component={MainStack}
options={{ headerShown: false }}
/>
<Stack.Screen
name="AddStack"
component={AddStack}
options={{
headerShown: false,
}}
/>
...
</Stack.Navigator>
);
}
Run Code Online (Sandbox Code Playgroud)
function MainStack() {
return (
<Stack.Navigator initialRouteName="Purchases">
<Stack.Screen
name="Purchases"
component={Purchases}
/>
<Stack.Screen
name="PurchaseDetail"
component={PurchaseDetail}
/>
...
</Stack.Navigator>
);
}
Run Code Online (Sandbox Code Playgroud)
export default function AddStack() {
return (
<Stack.Navigator initialRouteName="TakePicture">
<Stack.Screen
name="TakePicture"
component={TakePicture}
/>
...
</Stack.Navigator>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |