标签: react-navigation

反应本机纸张主题,反应导航不起作用

我是反应原生的新手。我正在使用 React Native Paper 为所有屏幕提供主题。我还使用反应导航堆栈导航器和抽屉导航器。首先,对于导航,纸张主题在导航组件中不起作用。但如果我不使用反应导航那么它就可以工作。

所以我尝试通过“withTheme”将主题从一个组件传递到另一个组件。但 withTheme 没有给我自定义主题道具。

这是我的 App.js

import { DefaultTheme,Provider as PaperProvider, Drawer, Avatar, withTheme } from 'react-native-paper';
import { createAppContainer,createSwitchNavigator } from 'react-navigation';
import { createDrawerNavigator } from 'react-navigation-drawer' 

const theme = {
  ...DefaultTheme,
  roundness: 8,
  colors: {
    ...DefaultTheme.colors,
    primary: '#ff0000',
    accent: '#000000',
    text: "#cc1111",
    background: "#000000",
    contained: '#000000'
  },
  dark: true
};

class App extends Component {

  render(){
      return(
        <PaperProvider theme={theme}>  
           <switchNavigator />
        </PaperProvider>
      )
  }
};

const switchNavigator = createSwitchNavigator({
  Login: Login,
  dranav: drawyerNavigator …
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation react-native-paper

3
推荐指数
1
解决办法
6514
查看次数

React Native NavigationEvents:onDidFocus 获得无限循环

我正在使用NavigationEvents自动加载我的列表。

到目前为止,它确实有效,并且加载了我更新的列表,但在控制台上,它继续在无限循环上运行 API 调用函数。

但是,每当我打开列表屏幕时,我只想加载 API 调用函数一次。

因此,如果有更好的解决方案,请随时提供帮助。

代码片段如下:

import { NavigationEvents } from 'react-navigation';

import NameActionBar from '../components/mNameActionBar';
import FreelancerList from '../components/mFreelancerList';

export default class MasterScreen extends Component {

    componentDidMount() {
        this.getFreelancerList();
        console.log('ComponentDidMount()');
    }

    getFreelancerList() {
        console.log('Freelancer List');
        let self = this;
        AsyncStorage.getItem('my_token').then((keyValue) => {
            console.log('Master Screen (keyValue): ', keyValue); //Display key value
            axios({
                method: 'get',
                url: Constants.API_URL + 'user_m/freelancer_list/',
                responseType: 'json',
                headers: {
                    'X-API-KEY': Constants.API_KEY,
                    'Authorization': keyValue,
                },
            })
                .then(function (response) {
                    //console.log('Response Data: ', response.data.data); …
Run Code Online (Sandbox Code Playgroud)

javascript react-native react-navigation

3
推荐指数
1
解决办法
1649
查看次数

在 React Navigation v5 动态组件配置中将 props 传递给组件

在我的应用程序中,如果用户未登录,我将显示登录屏幕;如果用户已登录,我将显示登录屏幕。在下面的简单示例中,您可以看到我正在检查 和 是否存在于jwtuser的应用程序中redux 存储,然后显示相应的屏幕。

type Props = {
    +jwt: string | null;
    +user: UserModel | null;
};

export class AuthStackNavigator extends Component<Props> {

    renderScreen() {

        if (this.props.jwt && this.props.user) {
            return (
                <Stack.Screen name={'AuthenticatedView'} component={AuthenticatedView} />
            );
        } else {
            return (
                <Stack.Screen name={'LoginView'} component={LoginView} />
            );
        }
    }

    render() {
        return (
            <Stack.Navigator>
                {this.renderScreen()}
            </Stack.Navigator>
        );
    }
}

const mapStateToProps = (state) => {
    return {
        jwt: getJwt(state),
        user: getUser(state)
    };
};

export default connect(mapStateToProps)(AuthStackNavigator); …
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation

3
推荐指数
1
解决办法
5160
查看次数

在 React Navigation 5 中传递参数

我正在尝试在选项卡导航器之间传递一些参数。下面是我的程序的结构。粗体字为路线

应用程序(选项卡导航器):{(堆栈)和过滤器(屏幕)}

主要(堆栈导航器):{ Home(屏幕)和MediaDetails(屏幕)}

我在屏幕上有一个与Filter关联的按钮,它具有onPress()函数。我传递了一些参数(但为了解决这个问题,我们只考虑参数) 。

this.props.navigation.navigate('Home', {
    to: this.state.to,
}
Run Code Online (Sandbox Code Playgroud)

现在在与Home关联的屏幕中,我正在读取状态内的参数,如下所示:

state = {
    to: this.props.route.params.to
}
Run Code Online (Sandbox Code Playgroud)

在App.js内部,我将to的初始值设置为“2020”,如下所示:

<Stack.Screen 
    name="Home" 
    component={HomeScreen}                 
    initialParams={{
       to: '2020'
    }}
/>
Run Code Online (Sandbox Code Playgroud)

初始值确实设置为2020。我按下按钮。假设我设置1900 就在this.props.navigation.navigate执行之前,我console.log(this.state.to)该值,它确实更新为1900。但是,当屏幕更改为Home时,该值将恢复为2020(通过 console.log 观察到)

有人能指出这种怪异行为的原因吗?我已经尝试调试这个好几个小时了,但没有成功。React Navigation 5 也很新,所以在网上找不到类似的东西。任何帮助将不胜感激。感谢您一路以来的阅读。

编辑:问题已解决,完整代码已删除!

react-native react-navigation react-navigation-stack react-navigation-bottom-tab react-navigation-v5

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

在类中存在的标头内使用“导航”和“路线” - React-navigation v5

我被困住了,因为我想切换到 React-navigation 的 V5 版本。\n在 v4 中,我曾经传递我的参数并将它们与以下命令一起使用:

\n\n
    \n
  • 放 :
  • \n
\n\n

this.props.navigation.navigate(\'MyDestination\', {myParam: \'value\'})

\n\n
    \n
  • 得到 :
  • \n
\n\n

this.props.navigation.getParam(\'myParam\')

\n\n

在 v5 中,有些事情发生了变化,我现在无法使用它,this.props.navigation因为应用程序似乎不知道它。

\n\n

我的代码被拆分,因此我的 App.js 仅引用导航类:

\n\n
import React from \'react\';\nimport { StyleSheet, Text, View } from \'react-native\'\nimport Navigation from \'./navigation/Navigation\'\n\nexport default function App() {\n  return (\n      <Navigation/>\n  );\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    flex: 1,\n    backgroundColor: \'#fff\',\n    alignItems: \'center\',\n    justifyContent: \'center\',\n  },\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我的导航文件包含所有导航机制(我还没有添加我的 TabBar,因为我想首先修复基本导航):

\n\n
import { NavigationContainer } from \'@react-navigation/native\'\nimport …
Run Code Online (Sandbox Code Playgroud)

navigation routes header class react-navigation

3
推荐指数
1
解决办法
5296
查看次数

任何导航器均未处理带有有效负载的 POP 操作

我不知道是什么导致了我的 React Native 应用程序中的这个错误。我正在使用 React Navigation 库的版本 5。

在此输入图像描述

有时会随机使应用程序崩溃。谷歌搜索并没有帮助我理解这是什么。这是非常有选择性的,但这是一件好事(或坏事)。

那么这意味着什么以及可能导致它的原因是什么?

react-native react-navigation react-navigation-stack react-navigation-bottom-tab react-navigation-v5

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

当离开屏幕时,React 导航自定义标题不会消失(仅限 iOS)

我有一个堆栈导航器,其中一个屏幕使用自定义标题:

import { createStackNavigator } from "@react-navigation/stack";
import * as React from "react";
import { Button, View } from "react-native";

const Stack = createStackNavigator();

function ScreenA({ navigation }) {
    return (
        <View style={{ flex: 1, justifyContent: "center"}}>
            <Button title="Click me" onPress={() => navigation.navigate("ScreenB")} />            
        </View>
    );
}

function ScreenB({ navigation }) {
    return (
        <View style={{ flex: 1 , justifyContent: "center"}}>
            <Button title="Click me" onPress={() => navigation.navigate("ScreenA")} />
        </View>
    );
}

function TestComp() {
    return (
        <Stack.Navigator>
            <Stack.Screen
                name="ScreenA"
                component={ScreenA} …
Run Code Online (Sandbox Code Playgroud)

react-navigation

3
推荐指数
1
解决办法
833
查看次数

如何使用反应导航删除双标题?

我的 React Native 0.61.5 使用react-navigation 5.1. 这是根导航代码:

const BTab = createBottomTabNavigator();
const Stack = createStackNavigator();
export default function App() {

  //const Appscreen = () => (<AppScreen data={data}/>);

  return (
    <NavigationContainer>
      <Stack.Navigator InitialRouteName="Splash">
        <Stack.Screen name="Splash" component={SplashScreen}}/>
        <Stack.Screen name="App" component={AppScreen} } />
      </Stack.Navigator>

    </NavigationContainer>
  );
}
Run Code Online (Sandbox Code Playgroud)

该组件AppScreen返回一个如下所示的堆栈:

return (
    <NavigationContainer independent={true}>
      <BTab.Navigator>
          <BTab.Screen name="Event" component={Eventstack} />
          <BTab.Screen name="Group" component={Groupstack} />
          <BTab.Screen name="Contact" component={Contactstack} />
      </BTab.Navigator>
    </NavigationContainer>
  );
Run Code Online (Sandbox Code Playgroud)

我注意到屏幕上有双标题:

在此输入图像描述

如何删除App标题并只保留Group

react-navigation react-navigation-stack react-navigation-v5

3
推荐指数
1
解决办法
2090
查看次数

在家里,我收到该错误:任何导航器均未处理有效负载为 {"params":{"company":"Marciello Resto 2"}} 的操作 'SET_PARAMS'

我现在使用 React Native 导航 5,在我的“Home 组件中,我有一个 setParams 可以工作,但我收到了这个错误:

\n
\n

{"params":{"company":"Marciello Resto 2"}}“任何导航器都没有处理带有有效负载的‘SET_PARAMS’操作。”

\n
\n

我用的是安卓模拟器。

\n

感谢大家的帮助!

\n
//App.js\nimport * as React from "react"\nimport { View, Text, ActivityIndicator, StyleSheet } from 'react-native'\nimport { NavigationContainer } from '@react-navigation/native'\nimport { createStackNavigator } from '@react-navigation/stack'\nimport { createDrawerNavigator } from '@react-navigation/drawer'\nimport EtiquettesPictureContext from './Components/Contexts/EtiquettesPictureContext'\nimport RootStack from './Navigation/Navigation'\nimport Home from './Components/Layouts/Home'\nimport Etiquettes from './Components/Layouts/Etiquettes'\nimport TemperaturesFridges from './Components/Layouts/TemperaturesFridges'\nimport BonsLivraisons from './Components/Layouts/BonsLivraisons'\nimport EtiquettesTakePicture from "./Components/EtiquettesTakePicture"\nimport BonsLivraisonsTakePicture from "./Components/BonsLivraisonsTakePicture"\nimport DlcAlertTakePicture from "./Components/DlcAlertTakePicture"\nimport Notifications from "./Components/Layouts/Notifications"\nimport Settings …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling router reactjs react-navigation

3
推荐指数
1
解决办法
3549
查看次数

React navigation 5(导航到另一个堆栈屏幕)

这是我的 appNavigator:我分为 3 个 stackScreen,包括HomeStackSettingsStackProfileStackAuthStack包含注册和登录屏幕,我创建底部选项卡包含上面的 3 个 StackScreen


const HomeStack = createStackNavigator();
function HomeStackScreen() {
  return (
    <HomeStack.Navigator headerMode="none">
      <HomeStack.Screen name="Home" component={HomeScreen} />
      <HomeStack.Screen name="Details" component={DetailsScreen} />
    </HomeStack.Navigator>
  );
}

const SettingsStack = createStackNavigator();
function SettingsStackScreen() {
  return (
    <SettingsStack.Navigator>
      <SettingsStack.Screen name="Settings" component={SettingsScreen} />
      <SettingsStack.Screen name="Details" component={DetailsScreen} />
    </SettingsStack.Navigator>
  );
}
const ProfileStack = createStackNavigator();
function ProfileStackScreen({navigation}) {
  return (
    <ProfileStack.Navigator>
      <ProfileStack.Screen name="Profile" component={ProfileScreen} />
    </ProfileStack.Navigator>
  );
}

// ** AUTH ** …
Run Code Online (Sandbox Code Playgroud)

react-native react-navigation

3
推荐指数
1
解决办法
4817
查看次数