热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何使用ReactNativePart#3构建WordPress应用:导航

本系列旨在展示我如何使用react-native构建一个应用程序以服务WordPress博客中的内容。由于我的博客谈论的是本机反应,因此该系列和文章相互联系。我们将学

本系列旨在展示我如何使用react-native构建一个应用程序以服务WordPress博客中的内容。 由于我的博客谈论的是本机反应,因此该系列和文章相互联系。 我们将学习如何设置许多使我们的生活舒适的程序包,并学习如何处理WordPress API。 在此,本书中讨论的最突出的功能是深色主题,脱机模式,无限滚动等。 您可以在本系列中找到更多。 本教程系列的灵感来自instamobile的React Native App模板

如果想从头开始学习,可以在下面找到本教程系列的所有先前部分:

  • 使用React Native#1构建WordPress客户端应用程序:概述
  • 使用React Native#2构建WordPress客户端应用程序:设置环境

现在,我们需要使用所有文件和文件夹来组织我们的项目结构,并设置导航。

为此,我们将安装react-navigation软件包版本4及其所有必需的依赖软件包。 最近,反应导航软件包提供的大多数组件和模块已被分为不同的软件包。 因此,我们还需要安装其他软件包才能使导航功能完全正常运行。 为此,我们需要在项目存储库中运行以下命令:

yarn add react-native-gesture-handler react-native-reanimated react-native-screens

在这里,我们已经安装了react-navigation软件包以及react-navigation-stack和react-navigation-tabs软件包。 react-navigation-stack程序包使我们能够创建应用程序屏幕的导航器堆栈。 react-navigation-tabs软件包使我们能够在主屏幕上创建底部的标签导航。

现在,我们还需要安装必需的依赖项才能正确运行react-navigation软件包,因此,我们还需要安装以下软件包:

react-native link

在这里,我们安装了三个组件,以使响应导航平稳运行。 对于Android,某些软件包需要一些额外的配置。 为此,我们可以按照文档中的说明进行操作。 并且,对于Android,如果react-native的版本小于0.60,则可能需要链接软件包。 为此,我们可以为每个包运行以下代码:

react-native link

如果是iOS,我们需要导航到“ ./ios/”文件夹,然后运行以下命令:

cd ios ; pod install

要完成Android的react-native-gesture-handler的安装,请对MainActivity.java进行以下修改:

package com.reactnavigation.example;import com.facebook.react.ReactActivity;+ import com.facebook.react.ReactActivityDelegate;+ import com.facebook.react.ReactRootView;+ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;public class MainActivity extends ReactActivity {@Overrideprotected String getMainComponentName () {return "Example" ;}+ @Override+ protected ReactActivityDelegate createReactActivityDelegate () {+ return new ReactActivityDelegate( this , getMainComponentName()) {+ @Override+ protected ReactRootView createRootView () {+ return new RNGestureHandlerEnabledRootView(MainActivity. this );+ }+ };+ }}

然后,我们可以在相应的模拟器中重新运行我们的项目。

对于这些屏幕,我们将首先创建四个屏幕,如下面的屏幕快照所示:

然后,我们需要向每个屏幕文件添加默认的react native模板。 下面的代码段提供了Bookmark.js文件的默认react本机代码:

import React, {Component} from 'react' ;import {View, Text} from 'react-native' ;class Bookmark extends Component {constructor (props) {super (props);this .state = {};}render() {return ( Bookmark );}}export default Bookmark;

同样,我们可以仅在更改类名称的情况下将默认模板添加到每个屏幕。

接下来,我们需要打开App.js文件并进行以下导入:

import React, { Component } from 'react' ;import {createAppContainer, createSwitchNavigator} from 'react-navigation' ;import {createBottomTabNavigator} from 'react-navigation-tabs' ;import {createStackNavigator} from 'react-navigation-stack' ;import Home from './src/screens/Home' ;import Categories from './src/screens/Categories' ;import Setting from './src/screens/Setting' ;import Bookmark from './src/screens/Bookmark' ;

在这里,我们从下面安装的包中导入了配置导航所需的各个组件。 我们还导入了屏幕文件。

然后,我们将使用react-navigation-tabs包中的createBottomTabNavigator函数创建底部的标签导航器。 下面的代码段提供了总体实现:

const DashboardTabNavigator = createBottomTabNavigator({HomePage : {screen : Home,navigationOptions : {tabBarLabel : 'Home' ,},},Categories : {screen : Categories,navigationOptions : {tabBarLabel : 'Categories' ,},},Bookmark : {screen : Bookmark,navigationOptions : {tabBarLabel : 'BookMark' ,},},Setting : {screen : Setting,navigationOptions : {tabBarLabel : 'Setting' ,},},},{navigationOptions : ( {navigation} ) => {const {routeName} = navigation.state.routes[navigation.state.index];return {headerTitle : routeName};},},);

在这里,我们还定义了底部标签导航器中的每个屏幕以及图标。 然后,我们还在navigationOptions对象中为每个路由配置了标题。

现在,我们需要创建堆栈导航器并向其添加底部导航器。 为此,我们需要利用react-navigation-stack包提供的createStackNavigator函数,如下面的代码片段所示:

const StackNavigator = createStackNavigator({DashboardTabNavigator : DashboardTabNavigator,});export default createAppContainer(StackNavigator);

然后,最后,我们需要注册我们的堆栈导航器以从react-navigation包中创建createAppContainer方法并将其导出。

因此,我们将在仿真器屏幕中获得以下结果:

摘要

在本章中,我们学习了如何使用所有依赖包来设置react-navigation包。 然后,使用这些软件包,我们学习了如何在项目中设置底部的标签导航。

From: https://hackernoon.com/build-a-wordpress-app-with-react-native-3-the-navigation-qs1r32je



推荐阅读
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 在使用 PyInstaller 将 Python 应用程序打包成独立的可执行文件时,若项目中包含动态加载的库或插件,需要正确配置 --hidden-import 和 --add-binary 参数,以确保所有依赖项均能被正确识别和打包。 ... [详细]
  • Go语言实现文件读取与终端输出
    本文介绍如何使用Go语言编写程序,通过命令行参数指定文件路径,读取文件内容并将其输出到控制台。代码示例中包含了错误处理和资源管理的最佳实践。 ... [详细]
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了.hbs文件作为Ember.js项目中的视图层,类似于HTML文件的功能,并详细讲解了如何在Ember.js应用中集成Bootstrap框架及其相关组件的方法。 ... [详细]
  • 本文深入探讨了Go语言中的接口型函数,通过实例分析其灵活性和强大功能,帮助开发者更好地理解和运用这一特性。 ... [详细]
  • 本文将详细介绍如何使用Java编程语言生成指定数量的不重复随机数,包括具体的实现方法和代码示例。适合初学者和有一定基础的开发者参考。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • Eclipse Java 开发环境入门指南
    本文介绍了Eclipse开发环境的基本操作,包括界面布局、创建新项目、包和类的方法。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
author-avatar
zzzzzzzzssss
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有