标签: react-navigation

使用react-navigation更改状态栏颜色

我DrawerNavigator在我的应用程序中使用了反应导航.没有任何自定义,Android状态栏为蓝色,而不是黑色.

我试着这样做

StatusBar.setBackgroundColor('#000000');
Run Code Online (Sandbox Code Playgroud)

但它只能工作几秒钟,然后又会变回蓝色.似乎我正在使用的东西将状态栏颜色设置为蓝色.但是,我试图删除所有依赖项并且只保留react-navigation,它仍然会发生,而react-navigation的文档也没有说明这一点.

如何使用react-navigation将状态栏颜色设置为黑色?

android-statusbar react-native react-navigation

7
推荐指数
2
解决办法
2万
查看次数

如何在Android上使用react-navigation时使状态栏保持半透明状态?

我正在使用最新的react-native(0.45.1)和react-navigation(1.0.0-beta.11).因为使用react-navigation,我不能使用ReactNative.StatusBar,所以我不知道如何使状态栏保持半透明状态.也许在Android和iOS上都有效,THX!

android react-native react-navigation

7
推荐指数
1
解决办法
1481
查看次数

如何重置嵌套在DrawerNavigatior中的StackNavigator的状态?

我正在构建一个应用程序,其导航基于react-navigation库中的DrawerNavigator.

这个导航器有3个标签:

  • 2个常规标签
  • 1 StackNavigator命名为"搜索"

StackNavigator包含一个允许用户搜索项目的屏幕,以及一个用户可以看到搜索结果的第二个屏幕.

我不希望搜索结果页面成为DrawerNavigator的选项卡,这就是我实现此结构的原因.

问题是:如果用户已经执行了搜索,当他点击"搜索"选项卡时,他不会返回搜索屏幕而是返回搜索结果屏幕.我希望用户回到搜索屏幕.

我怎样才能做到这一点?

react-native react-navigation

7
推荐指数
1
解决办法
904
查看次数

undefined不是一个对象(评估'_this2.props.navigation.navigate') - React Native

我真的无法让我的导航工作.我正在使用react-navigation(StackNavigator).

这是我的结构:http: //i.imgur.com/IKExx9g.png

我的导航工作原理HomeScreen.js:我导航HomeScreen.js到NewScreen.js没有问题.

App.js:

import React from 'react';
import {
    StatusBar, AppRegistry
} from 'react-native';
import {StackNavigator} from 'react-navigation';
import {HomeScreen} from './screens/HomeScreen';
import AboutScreen from "./screens/AboutScreen";
import NewScreen from "./screens/NewScreen";
import CalendarScreen from "./screens/CalendarScreen";
import AddAgendaScreen from "./screens/AddAgendaScreen";

const SimpleApp = StackNavigator({
    Home: {screen: HomeScreen},
    About: {screen: AboutScreen},
    New: {screen: NewScreen},
    Calendar: {screen: CalendarScreen},
    AddAgenda: {screen: AddAgendaScreen}
});

console.disableYellowBox = true;
StatusBar.setHidden(true);
export default SimpleApp; // Export root navigator as …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-native react-navigation

7
推荐指数
1
解决办法
1万
查看次数

如何解决'此导航器具有导航和容器道具'错误

当使用react-navigator时,我收到错误说明

这个导航器有导航和容器道具.所以目前还不清楚它是否应该拥有自己的国家.删除道具:'completedOrders,isLoading,hasError,getCompletedOrders'.如果导航器应从导航道具中获取其状态.如果导航器应保持自己的状态,请不要传递导航道具

如何解决这个问题.我想将completedOrders传递给Tabnavigator(AdminCompletedOrdersTab).

以下是我的代码

const AdminCompletedOrdersTab = TabNavigator({
    completedOrdersTab: { screen: CompletedOrders },
    rejectedOrdersTab: { screen: RejectedOrders },
    cancelledOrdersTab: { screen: CancelledOrders }
});

class CompletedOrdersScreen extends Component {
    static navigationOptions = {
        title: "Completed Orders"
    }

    componentDidMount() {
        this.props.getCompletedOrders(this.props.user);
    }
    render() {
        return(
            <AdminCompletedOrdersTab {...this.props}/>
        )

    }
}

const mapStateToProps = (state) => {
    return ({
        completedOrders: state.completedOrders.completedOrders,
        isLoading: state.completedOrders.isLoading,
        hasError: state.completedOrders.hasError
    })
}

const mapDispatchToProps = (dispatch) => {
    return ({
        getCompletedOrders: bindActionCreators(getCompletedOrders, dispatch)
    })
}



export default …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native react-redux react-navigation

7
推荐指数
1
解决办法
3246
查看次数

在react-native中设置动态的'initialRouteName'

问题很简单,我知道同一问题有很多答案,但是我设置了自己的App.js文件,但我尝试了几乎所有方法,但都没有成功。

所以我App.js看起来像这样

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View,
  StatusBar
} from 'react-native';
import { createStackNavigator  } from 'react-navigation';
import { Header, Button, Spinner } from './src/components/comman';
import SplashScreen from 'react-native-splash-screen';
import LoginForm from './src/components/LoginForm';
import SignupForm from './src/components/SignupForm';
import Home from './src/components/Home';
import ForgetPassword from './src/components/ForgetPassword';


import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['Warning: isMounted(...) is deprecated', 'Module RCTImageLoader']);
const App = createStackNavigator ({
  Login: { screen: LoginForm },
  Home: …
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation

7
推荐指数
1
解决办法
4982
查看次数

在createMaterialTopTabNavigator中使用navigation.navigate

我开始使用react-native,我正在尝试创建一个"hello word"应用程序来查看它是如何工作的.我在屏幕顶部制作了一个带有"标签"的菜单

在app.js中我添加了createStackNavigator来设置我的路由 App.js

import { ... }
const AppNavigator = createStackNavigator({     
    Main: { screen: Main},
    CScreen: {screen: FormCScreen},
});

type Props = {};
export default class App extends Component<Props> {
render() {
    return (
        <AppNavigator />    
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的主屏幕,我在其中设置标签.

Main.js

imports {AScreen, BScreen} ...
const Tab = createMaterialTopTabNavigator(
{
   A: AScreen,
   B: BScreen,
},
{
  tabBarPosition: 'top',

});

export default class Main extends Component {

render() {
    return (  
      <Tab/>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

BScreen.js

现在在我的一个BScreen选项卡上,我想点击一个按钮,我希望它加载屏幕(CScreen)

imports …
Run Code Online (Sandbox Code Playgroud)

javascript react-router react-native react-navigation

7
推荐指数
1
解决办法
2736
查看次数

如何在React Navigation中深度链接到嵌套导航器?

我的导航结构如下:

const App = () => {
  const prefix = 'test://';
  return <AppNavigator uriPrefix={prefix} />;
};

const AppNavigator = createSwitchNavigator({
  splash: SplashScreen,
  auth: AuthStack,
  main: HomeStack,
});

const AuthStack = createStackNavigator({
  landing: LandingScreen,
  login: {
    screen: LoginScreen,
    path: 'page/login',
  },
  register: {
    screen: RegisterScreen,
    path: 'page/signup',
  },
});

const HomeStack = createStackNavigator({
  home: HomeScreen,
  details: {
    screen: DetailsScreen,
    path: 'details/:assetId',
  },
  upsell: {
    screen: UpsellScreen,
    path: 'page/upsell',
  },
});
Run Code Online (Sandbox Code Playgroud)

我的深层链接URI是:

test://page/login
test://page/signup
test://details/12345
test://page/upsell
Run Code Online (Sandbox Code Playgroud)

链接到任何这些URI时,我总是被带到,SplashScreen这是我应用程序的第一个屏幕。如何正确链接到嵌套导航器并链接到正确的屏幕?

javascript reactjs react-native react-navigation

7
推荐指数
1
解决办法
99
查看次数

打开在react-native的Routes中未指定的DeepLink

如果我考虑一个例子

https://app.abc.com/login 
Run Code Online (Sandbox Code Playgroud)

这会在我的应用中打开登录页面。但是如果链接像

https://app.abc.com/loginUser //This link is a route in web app
Run Code Online (Sandbox Code Playgroud)

这不会在App中打开登录页面,因为路径未在路线中定义

现在的要求是,每当用户单击“第二”链接时,即使这样,它也应该在App中而不是在Web中打开登录组件。即。同一组件有多个路由,还是可以为此类路由打开通用组件?我们可以在React-Native中实现吗?

javascript react-native react-navigation

7
推荐指数
1
解决办法
163
查看次数

如何使用useEffect设置setParams并避免获得不确定的渲染?

我正在使用,react-navigation并且有一个动态标头,所以我正在使用setParams并在标题中获取它。

const MyComponent = ({navigation}) => {
    useEffect(() => {
        const { setParams, state } = navigation
        const { params = {} } = state
        const { description } = params
        setParams({ headerTitle: description })
    }, [])

    return (...)
}

MyComponent.navigationOptions = ({ navigation }) => ({
    title: navigation.getParam('headerTitle')
})
Run Code Online (Sandbox Code Playgroud)

这里的问题是我只想执行setParams一次(所以我使用[]),但是得到警告(eslint(react-hooks/exhaustive-deps))并说我需要添加navigation到依赖项数组。

如果我添加navigation到依赖项数组,它将成为无限循环。

setParam更新=> navigation调用=> setParam更新=> navigation并继续...

如何setParam只调用一次,并避免相应地正确响应钩子规则?

reactjs react-native react-navigation react-hooks

7
推荐指数
1
解决办法
370
查看次数