标签: react-native-navigation

goBack 如何在排毒测试中筛选

我让自动化detox进行本地测试,它有下一个屏幕顺序A -> B -> C,我想回到屏幕上B <- C. 有解决方案吗?

automated-tests react-native react-native-navigation react-navigation detox

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

为什么需要 this.props.componentId?

为什么this.props.componentId需要?

它的目的是什么?

为什么我们不能在不需要那个 id 的情况下使用这个库?

react-navigation不需要那样的东西,react-native-navigationv1 没有使用那样的东西。那么为什么 v2 需要并使用它呢?我问的原因首先是为了理解它,其次是看看我是否可以跳过这个,因为现在我不能使用传奇中的 RNN v2。

react-native react-native-navigation

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

store.getState 不是函数 Redux-persist

我正在尝试在我的 React Native 应用程序上实现 Redux-persist。完全按照设置文档,我从这个更改了我的 store.js:

import { applyMiddleware, createStore } from 'redux';
import * as thunkMiddleware from 'redux-thunk';

import reducers from '../reducers';

let middlewares = [thunkMiddleware.default];
const store = createStore(reducers, applyMiddleware(...middlewares));

export default store;
Run Code Online (Sandbox Code Playgroud)

对此:

import { applyMiddleware, createStore } from 'redux';
import * as thunkMiddleware from 'redux-thunk';
import { persistStore, persistReducer } from 'redux-persist';
import AsyncStorage from '@react-native-community/async-storage';

import reducers from '../reducers';

const persistConfig = {
    key: 'root',
    storage: AsyncStorage,
};
const persistedReducer = persistReducer(persistConfig, reducers); …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native react-redux react-native-navigation redux-persist

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

无法从“node_modules\react-native-gesture-handler\createHandler.js”解析“fbjs/lib/areEqual”

我正在使用 expo 构建一个 react-native 应用程序,但是,我有一个错误,因此我无法继续构建该应用程序。我什至在错误消息中提到的 node_modules 中查找文件。我正在使用 react-native-gesture-handler 进行屏幕导航。如果我卸载了 react-native-gesture-handler 并删除了导航代码,这会解决我的错误吗?我该如何解决?

应用程序.js

import React, { Component } from 'react';
import { StackNavigator } from 'react-navigation';
import Plan from './screens/Plan';
import Home from './screens/Home';


const AppNavigator = StackNavigator({
  PlanScreen: { screen: Home },
  HomeScreen: { screen: Plan }
});

export default class App extends Component {
  render() {
    return (
      <AppNavigator/>
    )
  }
}

Run Code Online (Sandbox Code Playgroud)

主页.js

import React, { Component } from 'react';
import { View, Text, Button, TextInput } from 'react-native'; …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-android react-native-navigation expo react-datepicker

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

Pure React Native 应用程序在以发布模式打开后在滑动时崩溃

我正在为我的纯RN 0.61.2应用程序使用React-Navigation。当我在调试模式下使用它时,该应用程序运行完美。但是,在发布模式下,当我尝试打开抽屉导航菜单或在选项卡菜单中向下滚动时,应用程序会立即崩溃。

依赖项:

...
  "dependencies": {
    "@react-native-community/async-storage": "^1.6.2",
    "@react-native-community/netinfo": "^4.4.0",
    "@react-native-community/slider": "^2.0.2",
    "react": "16.9.0",
    "react-native": "0.61.2",
    "react-native-admob": "^2.0.0-beta.6",
    "react-native-gesture-handler": "^1.4.1",
    "react-native-reanimated": "^1.3.0",
    "react-native-screens": "1.0.0-alpha.23",
    "react-native-vector-icons": "^6.6.0",
    "react-navigation": "^4.0.10",
    "react-navigation-drawer": "^2.2.2",
    "react-navigation-stack": "^1.9.3",
    "react-navigation-tabs": "^2.5.5"
  },
...
Run Code Online (Sandbox Code Playgroud)

我已经将这些代码行添加到android/app/build.gradle的依赖项中:

    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
Run Code Online (Sandbox Code Playgroud)

在 App.js 中,我试过

import {enableScreens} from 'react-native-screen';
enableScreens();
Run Code Online (Sandbox Code Playgroud)

并且

import {useScreens} from 'react-native-screen';
useScreens();
Run Code Online (Sandbox Code Playgroud)

2.0.0-alpha.12.0.0-alpha.31.0.0-alpha.23版本react-native-screens

然而,我仍然得到相同的结果:调试模式完美运行,释放模式在抽屉导航滑动或标签导航滚动后急剧崩溃。


我使用adb logcat并看到的解决方案 …

android react-native react-native-android react-native-navigation

7
推荐指数
0
解决办法
1295
查看次数

如何使用 React Navigation 5.x 在不同的选项卡中重置堆栈

我的应用程序有一个 TabNavigator,每个选项卡中都有一个 StackNavigator。通过单击不同的选项卡在堆栈之间导航时,我不会重置堆栈,因此当您更改选项卡时,堆栈包含以前的状态。但是,偶尔从一个选项卡中的屏幕中,我想导航到不同选项卡中的特定屏幕,在这种情况下,我想重置目标选项卡中的堆栈。

TabNavigator
    Tab1 
      StackNavigator
         - ScreenA
         - ScreenB
    Tab2
      StackNavigator
         - Screen1
         - Screen2
Run Code Online (Sandbox Code Playgroud)

我希望能够在 Screen2 上放置一个按钮来重置 Tab1 上的堆栈。

我想知道此处文档中提到的“目标”参数是否有帮助,但没有关于如何使用它的示例。https://reactnavigation.org/docs/navigation-actions/

(我在这里搜索过,但为 4.x 建议的答案似乎不再适用)。谢谢!

react-native-navigation react-navigation react-navigation-v5

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

如何使用react-native-navigation将单屏应用转换为基于选项卡的应用?

我正在尝试反应原生导航,但我遇到了一个简单的问题.

该应用程序有一个没有选项卡的登录页面.(非常类似于facebook登录页面)(图片参考 - 图片只是为了给出一个想法.图片礼貌 - 谷歌 用户登录后,我想转换为基于标签的应用程序,我想要两个不同的导航堆栈标签(在Quora等应用中发生)(图片参考 - 再次图像只是一个参考)

我使用mobx进行状态管理.

我知道这是一个常见的用例,但我对我所知的两个选项感到困惑 -

  1. 提供对用户登录变量的反应,并从单屏应用程序更改为基于选项卡的应用程序.(唯一关注的是当isLoggedIn发生反应时缺少动画)例如 - App.js

    constructor() {
    reaction(() => auth.isLoggedIn, () => app.navigateToHome())
    reaction(() => app.root, () => this.startApp(app.root));
    app.appInitialized();
    
    Run Code Online (Sandbox Code Playgroud)

    }

    startApp(root){
        switch (root) {
          case 'user.login':
            Navigation.startTabBasedApp({
              tabs: [
                {
                  label: 'One',
                  screen: 'user.login',
                  icon: require('./assets/one.png'),
                  selectedIcon: require('./assets/one_selected.png'),
                  navigatorStyle: {},
                }
              ]
              screen: {
                screen: root,
                title: 'Login',
                navigatorStyle: {
                  screenBackgroundColor: colors.BACKGROUND,
                  statusBarColor: colors.BACKGROUND
                },
                navigatorButtons: {}
              }
            })
            return ;
          case 'user.home':
            Navigation.startTabBasedApp({
              tabs: [ …
    Run Code Online (Sandbox Code Playgroud)

react-native mobx mobx-react react-native-navigation

6
推荐指数
1
解决办法
774
查看次数

react-native:无法识别命令“ run-android”。可能是因为npm install

最近,我开始遇到此问题,当我在项目中安装react-native软件包(例如react-navigation:)时,一堆软件包都被删除了(我认为包括react,react-native)。

然后,当我尝试运行命令“ run-android”时,它说它无法识别。

我最近更新到最新的npmreact-native-cli。“ npm install”有问题吗?还是react-native

node version: 8.1.2 <br/>
react-native-cli: 2.0.1 <br/>
react-native: 0.45.1 <br/>
react-navigation: 1.0.0-beta.11
Run Code Online (Sandbox Code Playgroud)

下面是重新创建的步骤:

  • 第1步-创建项目。 在此处输入图片说明

  • 第2步-运行“ run-android”命令(可行)。 在此处输入图片说明

  • 步骤3-将“ react-native-navigation”安装到项目中。 在此处输入图片说明

Notice in the image above. Seems like all the other packages are removed from the project.<br/><br/>
Run Code Online (Sandbox Code Playgroud)
  • 第4步-尝试再次运行“ run-android”命令。(将失败,但之前曾工作过) 在此处输入图片说明

对这个问题是什么以及如何解决这个问题有任何想法吗?

android npm react-native npm-install react-native-navigation

6
推荐指数
1
解决办法
7088
查看次数

使用深度链接时未获取route.params

我正在尝试在我的应用程序上实现深度链接,我正在关注有关此主题的 expo-cli react-native-navigation 文档。基本配置完成后,我无法从我设置的任何链接中的route.params 获取参数。

这是我的代码的示例

链接.js

import * as Linking from "expo-linking";

const prefix = Linking.createURL("/");

const config = {
  screens: {
    userStartSession: {
      path: "home/:itemInfo",
      parse: { itemInfo: (itemInfo) => `${itemInfo}` },
    },
  },
};

const linking = {
  prefixes: [prefix],
  config,
};

export default linking;
Run Code Online (Sandbox Code Playgroud)

文档在这里: https: //reactnavigation.org/docs/deep-linking/ 这里: https: //reactnavigation.org/docs/configuring-links/

然后将链接导入到Navigation.js

import React from "react";
import linking from "../utils/linking/linking";

export default function Navigation() {

  return (
    <NavigationContainer linking={linking} fallback={<Text>Cargando...</Text>}>
      <Stack.Navigator>
        <Stack.Screen
          name="userStartSession"
          options={{ headerShown: false, …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-navigation expo

6
推荐指数
0
解决办法
829
查看次数

删除 React 导航 v6 中的标题

使用自定义样式删除 React 导航 6 中的标头,这是堆栈导航的代码

 <NavigationContainer>
  <Stack.Navigator
    initialRouteName='OtpScreen'
    // screenOptions={{
    //   headerShown: false,
    // }}
    screenOptions={{ headerMode: 'none' }}
  >
    <Stack.Screen
      options={{ headerShown: false }}
      name='Tabs'
      component={MyTabs}
    />

  </Stack.Navigator>
</NavigationContainer>
Run Code Online (Sandbox Code Playgroud)

标签导航

   <Tab.Navigator
  useHeaderHeight={false}
  screenOptions={
    ({
      headerShown: false,
    },
    ({ route }) => ({
      tabBarIcon: ({ focused, color, size }) => {
        let iconName;

        if (route.name === 'Home') {
          iconName = focused
            ? 'ios-information-circle'
            : 'ios-information-circle-outline';
        } else if (route.name === 'Settings') {
          iconName = focused ? 'ios-list' : 'ios-list';
        } …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-navigation react-navigation

6
推荐指数
1
解决办法
7823
查看次数