模态化不会覆盖反应导航
Modalize does not override react navigation
每次用户点击特定元素时,我都希望出现一个描述用户点击的所有内容的模态化,我正在使用 Modalize 并尝试使用 portalize,但我无法进行模态化出现在点击栏的第一个。
我的 App.js 导航所在的代码。
import React from "react";
import { createAppContainer, createSwitchNavigator } from "react-navigation";
import { createStackNavigator } from "react-navigation-stack";
import { createBottomTabNavigator } from "react-navigation-tabs";
import { Provider as AuthProvider } from "./src/context/AuthContext";
import { setNavigator } from "./src/navigationRef";
import AccountScreen from "./src/screens/AccountScreen";
import Exp from "./src/screens/Exp";
import HomeScreen from "./src/screens/LoggedIn/HomeScreen";
import Onboarding from "./src/screens/NotLogged/Onboarding";
import SigninScreen from "./src/screens/NotLogged/SigninScreen";
import SignupScreen from "./src/screens/NotLogged/SignupScreen";
import ResolveAuthScreen from "./src/screens/ResolveAuthScreen";
import TrackCreateScreen from "./src/screens/TrackCreateScreen";
import TrackDetailScreen from "./src/screens/TrackDetailScreen";
import TrackListScreen from "./src/screens/TrackListScreen";
const switchNavigator = createSwitchNavigator({
ResolveAuth: ResolveAuthScreen,
loginFlow: createStackNavigator({
Onboarding: Onboarding,
Signup: SignupScreen,
Signin: SigninScreen,
}),
mainFlow: createBottomTabNavigator({
trackListFlow: createStackNavigator({
Home: HomeScreen,
TrackList: TrackListScreen,
TrackDetail: TrackDetailScreen,
}),
CreateTrack: TrackCreateScreen,
Account: AccountScreen,
Exp: Exp,
}),
});
const App = createAppContainer(switchNavigator);
export default () => {
return (
<AuthProvider>
<App
ref={(navigator) => {
setNavigator(navigator);
}}
/>
</AuthProvider>
);
};
是的,原因是,Modalize 不使用 react-native Modal
,它在所有内容之上有单独的 activity 渲染,但您仍然可以使用 react-native Modal
通过将此 属性 添加到您的模态化。
- withReactModal
如果您想在所有内容之上呈现您的模式,您必须 Portal or Portalize 这是第一个
的克隆版本
您应该像这样用 Portal.Host
包装您的应用,
<AuthProvider>
<Portal.Host>
<App
ref={(navigator) => {
setNavigator(navigator);
}}
/>
</<Portal.Host>
</AuthProvider>
然后用这样的门户扭曲你的模态化组件。
const AppModalize = React.forwardRef((props, ref) => {
return (
<Portal>
<Modalize
{...props}
ref={ref}
>
{props.children}
</Modalize>
</Portal>
)
})
export default AppModalize
现在使用此组件来渲染您的模态。
每次用户点击特定元素时,我都希望出现一个描述用户点击的所有内容的模态化,我正在使用 Modalize 并尝试使用 portalize,但我无法进行模态化出现在点击栏的第一个。
我的 App.js 导航所在的代码。
import React from "react";
import { createAppContainer, createSwitchNavigator } from "react-navigation";
import { createStackNavigator } from "react-navigation-stack";
import { createBottomTabNavigator } from "react-navigation-tabs";
import { Provider as AuthProvider } from "./src/context/AuthContext";
import { setNavigator } from "./src/navigationRef";
import AccountScreen from "./src/screens/AccountScreen";
import Exp from "./src/screens/Exp";
import HomeScreen from "./src/screens/LoggedIn/HomeScreen";
import Onboarding from "./src/screens/NotLogged/Onboarding";
import SigninScreen from "./src/screens/NotLogged/SigninScreen";
import SignupScreen from "./src/screens/NotLogged/SignupScreen";
import ResolveAuthScreen from "./src/screens/ResolveAuthScreen";
import TrackCreateScreen from "./src/screens/TrackCreateScreen";
import TrackDetailScreen from "./src/screens/TrackDetailScreen";
import TrackListScreen from "./src/screens/TrackListScreen";
const switchNavigator = createSwitchNavigator({
ResolveAuth: ResolveAuthScreen,
loginFlow: createStackNavigator({
Onboarding: Onboarding,
Signup: SignupScreen,
Signin: SigninScreen,
}),
mainFlow: createBottomTabNavigator({
trackListFlow: createStackNavigator({
Home: HomeScreen,
TrackList: TrackListScreen,
TrackDetail: TrackDetailScreen,
}),
CreateTrack: TrackCreateScreen,
Account: AccountScreen,
Exp: Exp,
}),
});
const App = createAppContainer(switchNavigator);
export default () => {
return (
<AuthProvider>
<App
ref={(navigator) => {
setNavigator(navigator);
}}
/>
</AuthProvider>
);
};
是的,原因是,Modalize 不使用 react-native Modal
,它在所有内容之上有单独的 activity 渲染,但您仍然可以使用 react-native Modal
通过将此 属性 添加到您的模态化。
- withReactModal
如果您想在所有内容之上呈现您的模式,您必须 Portal or Portalize 这是第一个
的克隆版本您应该像这样用 Portal.Host
包装您的应用,
<AuthProvider>
<Portal.Host>
<App
ref={(navigator) => {
setNavigator(navigator);
}}
/>
</<Portal.Host>
</AuthProvider>
然后用这样的门户扭曲你的模态化组件。
const AppModalize = React.forwardRef((props, ref) => {
return (
<Portal>
<Modalize
{...props}
ref={ref}
>
{props.children}
</Modalize>
</Portal>
)
})
export default AppModalize
现在使用此组件来渲染您的模态。