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

如何使用ReactNativePart#8构建WordPress客户端应用程序:SinglePost视图

由于我们在主屏幕中具有文章列表,因此我们也需要显示完整的文章。为此,我们将创建SinglePost屏幕,该屏幕将显示整个文章。在这里&#x

由于我们在主屏幕中具有文章列表,因此我们也需要显示完整的文章。 为此,我们将创建SinglePost屏幕,该屏幕将显示整个文章。 在这里,我们将学习如何从WordPress API获取单个文章。

首先,我们需要将SinglePost屏幕添加到App.js文件中的导航器中。 为此,我们需要导入SinglePost屏幕并将其添加到堆栈导航器中,如下面的代码片段所示:

import SinglePost from './src/screens/SinglePost' ;const StackNavigator = createStackNavigator({DashboardTabNavigator : DashboardTabNavigator,SinglePost : SinglePost,
});export default createAppContainer(StackNavigator);

然后,我们需要将导航从主屏幕添加到SinglePost屏幕。 当我们单击主屏幕文章列表中的任何文章卡片时,其想法是导航到SinglePost屏幕。 如此一来,文章中的完整信息将显示在SinglePost屏幕中。 为此,我们需要以包裹FlatList通过使用模板TouchableOpacity分量和导航配置添加到它的onPress事件如显示在下面的代码片断:

this .props.navigation.navigate( 'SinglePost' , {post_id : item.id,})}>style = {{shadowOffset: { width: 5 , height: 5 },width: ' 90 %',borderRadius: 12 ,alignSelf: ' center ',marginBottom: 10 ,}}>.................................. // other code

实施SinglePost屏幕

现在,我们将实现SinglePost屏幕的UI。 为此,我们需要创建一个名为SinglePost.js在新文件'./screens/'文件夹中。

在SinglePost屏幕中,我们要显示文章的封面图像和文章的全部内容,以及作者的头像,文章的名称和发布日期。

下面的代码段提供了SinglePost屏幕的整体实现:

import React from 'react' ;
import {Avatar,Button,Card,Title,Paragraph,List,
} from 'react-native-paper' ;
import HTML from 'react-native-render-html' ;
import {View,ScrollView,ActivityIndicator,Dimensions
} from 'react-native' ;
import moment from 'moment' ;export default class SinglePost extends React . Component {constructor (props) {super (props);this .state = {isloading : true ,post : [],};}

在这里,我们导入了构建SinglePost屏幕所需的必要软件包。 我们还定义了正在加载和发布的所需状态。

现在,我们需要使用fetch方法从WordPress API中获取相应的帖子。 首先,我们需要获取从主屏幕页面发送的帖子ID作为道具。 然后,使用它从API提取特定的帖子,如下面的代码片段所示:

componentDidMount() {this .fetchPost();
}
async fetchPost() {let post_id = this .props.navigation.getParam( 'post_id' )const response = await fetch(`https://kriss.io/wp-json/wp/v2/posts?_embed&include= ${post_id} `);const post = await response.json();this .setState({post : post,isloading : false ,});

在这里,我们已使用API​​提取了单个帖子,并以JSON格式对其进行了解析。 然后,我们将获取的post设置为post state变量,并将isloading状态更改为false。

现在,我们需要根据isloading状态显示帖子模板。 如果isloading状态为true,则显示ActivityIndi​​cator模板,该模板显示微调器加载器。 成功获取数据后,将显示发布模板,并且加载程序消失。 下面的代码段提供了总体实现:

render() {let post = this .state.post;if ( this .state.isloading) {return (style = {{paddingVertical: 20 ,borderTopWidth: 1 ,borderColor: '# CED0CE ',}}> );}return ( {return ();}}/>)});}
}

在这里,对于post模板,我们使用了react-native包和react-native-paper包中的不同组件。 父组件是ScrollView组件,它可以垂直滚动屏幕。 然后, ScrollView组件使用Card组件及其子组件包装模板。

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

如我们所见,我们还成功地为SinglePost屏幕实现了整个UI。

摘要

在本章中,我们学习了如何实现SinglePost屏幕的整体UI。 首先,我们学习了如何通过单击主屏幕列表中的任何文章来设置到SinglePost屏幕的导航。 SinglePost屏幕显示单个文章的整体内容。 我们使用了react-native-paper中的不同组件来实现UI。 我们还在此屏幕上利用了时刻和react-native-render-html包。 最后,我们学习了如何使用fetch函数从WordPress API中获取单篇文章的数据。

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

From: https://hackernoon.com/build-wordpress-client-app-with-react-native-8-singlepost-px1j5328a



推荐阅读
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • 大家好,我是梅巴哥er。本文将深入探讨Redux框架中的第三个实战案例,具体实现每两秒自动点击按钮以触发颜色变化的功能。该案例中,一个关键点在于是否需要使用异步操作来处理定时任务,我们将详细分析其必要性和实现方式。通过这一实例,读者可以更好地理解Redux在实际项目中的应用及其异步处理机制。 ... [详细]
  • 在探讨C语言编程文本编辑器的最佳选择与专业推荐时,本文将引导读者构建一个基础的文本编辑器程序。该程序不仅能够打开并显示文本文件的内容及其路径,还集成了菜单和工具栏功能,为用户提供更加便捷的操作体验。通过本案例的学习,读者可以深入了解文本编辑器的核心实现机制。 ... [详细]
  • 深入探索Node.js新框架:Nest.js第六篇
    在本文中,我们将深入探讨Node.js的新框架Nest.js,并通过一个完整的示例来展示其强大功能。我们将使用多个装饰器创建一个基本控制器,该控制器提供了多种方法来访问和操作内部数据,涵盖了常见的CRUD操作。此外,我们还将详细介绍Nest.js的核心概念和最佳实践,帮助读者更好地理解和应用这一现代框架。 ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • Java SE 文件操作类详解与应用
    ### Java SE 文件操作类详解与应用#### 1. File 类##### 1.1 File 类概述File 类是 Java SE 中用于表示文件和目录路径名的对象。它提供了丰富的方法来操作文件和目录,包括创建、删除、重命名文件,以及获取文件属性和信息。通过 File 类,开发者可以轻松地进行文件系统操作,如检查文件是否存在、读取文件内容、列出目录下的文件等。此外,File 类还支持跨平台操作,确保在不同操作系统中的一致性。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 深入解析微信小程序开发中的全局配置文件设置与优化技巧
    本文深入探讨了微信小程序开发中全局配置文件的设置与优化技巧,详细解析了 `app.js`、`app.json`、`app.wxss` 和 `project.config.json` 的功能与最佳实践。通过合理配置这些文件,开发者可以显著提升小程序的性能和用户体验。文章还介绍了如何利用这些配置文件进行模块化开发和调试,帮助开发者更好地管理和维护小程序项目。 ... [详细]
  • React组件是构成用户界面的基本单元,每个组件都封装了特定的功能和逻辑,具备高度的独立性和可复用性。通过将不同大小和功能的组件组合在一起,可以构建出复杂且功能丰富的页面,类似于拼图游戏中的各个部分,最终形成一个完整的视觉效果。 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
  • 深入解析 Vue 中通过 $route.params 实现参数传递的方法与技巧
    本文深入探讨了在 Vue 框架中利用 `$route.params` 进行参数传递的方法和技巧。通过详细解析 `$route.params` 的工作机制及其与 `$route.query` 的区别,帮助开发者更好地理解和应用这一功能。文章不仅涵盖了基本的使用方法,还提供了实际案例和最佳实践,以便读者能够灵活运用这些技术,提升开发效率和代码质量。 ... [详细]
author-avatar
李桂平2402851397
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有