iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >React-Native中有哪些常用的组件
  • 645
分享到

React-Native中有哪些常用的组件

react-native 2023-05-31 01:05:12 645人浏览 安东尼
摘要

本篇文章给大家分享的是有关React-Native中有哪些常用的组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ScrollView组件能够调用移动平台的ScrollView

本篇文章给大家分享的是有关React-Native中有哪些常用的组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

ScrollView组件

能够调用移动平台的ScrollView(滚动视图)的组件,同时还集成了触摸定的“响应者”系统。

注意一定要给scrollview一个高度,或者是他父级的高度。

常用方法

  • onScrollBeginDrag:开始拖拽的时候;

  • onScrollEndDrag:结束拖拽的时候;

  • onMomentumScrollBegin:开始滑动;

  • onMomentumScrollEnd:开始滑动;

特殊组件

  • RefreshControl 以用在ScrollView或ListView内部,为其添加下拉刷新的功能。

  • 当ScrollView处于竖直方向的起点位置(scrollY: 0),此时下拉会触发一个onRefresh事件。

示例

创建一个scroll.js文件

代码如下:

import React, { Component } from 'react';import { StyleSheet, View, ScrollView, RefreshControl} from 'react-native';var dataSource = require("./data.JSON");// 创建组件var ScrollTest = React.createClass({ // 下面的几种函数可以根据自己的需求添加 _onScrollBeginDrag () { // 这里是开始拖拽的函数 }, _onScrollEndDrag () { // 这里是拖拽结束的函数 }, _onMomentumScrollBegin () { // 这里是开始滚动的函数 }, _onMomentumScrollEnd () { // 这里是滚动结束的函数 }, _refresh () { // 这里是请求数据的函数 alert("正在请求数据"); }, render () { return (  <ScrollView style={styles.container}   onScrollBeginDrag={this._onScrollBeginDrag}   onScrollEndDrag={this._onScrollEndDrag}   onMomentumScrollBegin={this._onMomentumScrollBegin}   onMomentumScrollEnd={this._onMomentumScrollEnd}   refreshControl={    <RefreshControl refreshing={false}      titleColor={"red"}      title={"正在刷新......."}      tintColor={"cyan"}      onRefresh={this._refresh} />   }>  <View style={[styles.item, styles.item1]}></View>  <View style={[styles.item, styles.item2]}></View>  <View style={[styles.item, styles.item3]}></View>  </ScrollView> ) }});// 实例化样式var styles = StyleSheet.create({ container: { marginTop: 25, height: 300, borderWidth: 1, borderColor: "#ccc" }, item: { width: 280, height: 150, margin: 20 }, item1: { backgroundColor: "red" }, item2: { backgroundColor: "green" }, item3: { backgroundColor: "yellow" }});module.exports = ScrollTest;

再将index.iOS.js文件改成如下:

import React, { Component } from 'react';import { AppReGIStry, View,} from 'react-native';var Scroll = require("./scroll");var ScrollTest = React.createClass({ render () { return (  <View>  <Scroll></Scroll>  </View> ) }});AppRegistry.registerComponent('useComponent', () => ScrollTest);

最终效果:

React-Native中有哪些常用的组件

ListView组件

用于高效地显示一个可以垂直滚动的变化的数据列表。

最基本的使用方式就是创建一个ListView.DataSource数据源,然后给它传递一个普通的数据数组,再使用数据源来实例化一个ListView组件,并且定义它的renderRow回调函数,这个函数会接受数组中的每个数据作为参数,返回一个可渲染的组件(作为listview的每一行)。

数据处理

ListView.DataSource为ListView组件提供高性能的数据处理和访问。

我们需要调用方法从原始输入数据中抽取数据来创建ListViewDataSource对象,并用其进行数据变更的比较。

DataSource初始化:

getInitialState:function () {// 实例化DataSource对象 var ds = new ListView.DataSource({ rowHasChanged:(oldData,newData) => oldData !== newData }); return { data:ds.cloneWithRows(news) }}

常用属性

  • 设置数据源:dataSource={this.state.dataSource}

  • 设置列表组件:renderRow={this._renderRow}

  • 设置ListView头部:renderHeader={this._renderHeader}

  • 设置列表项之间的间隔:renderSeparator={this._renderSeparator}

示例 制作一个电影列表

博主先前从猫眼电影里获取了一些电影介绍的json文件,有兴趣的同学可以去猫眼电影列表获取一些信息,注意这里需要json格式转换一下!

这里创建一个movieList.js的文件

代码如下:

import React, { Component } from 'react';import { StyleSheet, Text, View, Image, ListView} from 'react-native';// 通过ListView实现电影列表var movies = require("./data.json").data.movies;// 创建组件var ListMovie = React.createClass({ getInitialState () { var ds = new ListView.DataSource({  rowHasChanged: (oldData, newData) => oldData !== newData }); return {dataSource: ds.cloneWithRows(movies)} }, _renderRow (movie) { return (  <View style={styles.row}>  <Image style={styles.img} source={{uri: movie.img}}/>  <View style={styles.right}>   <Text style={styles.name}>{movie.nm}</Text>   <Text style={styles.dir}>导演:{movie.dir}</Text>   <Text style={styles.dir}>上映时间:{movie.rt}</Text>  </View>  </View> ) }, _renderHeader () { return (  <View style={styles.header}>  <Text style={styles.title}>猫眼热门电影</Text>  <View style={[styles.separator, {width: "100%"}]}></View>  </View> ) }, _renderSeparator () { return <View style={styles.separator}></View> }, render () { return <ListView style={styles.container}    dataSource={this.state.dataSource}    renderRow={this._renderRow}    renderHeader={this._renderHeader}    renderSeparator={this._renderSeparator}  /> }});// 实例化样式var styles = StyleSheet.create({ container: { marginTop: 25 }, row: { flexDirection: "row", alignItems: "center", padding: 10 }, img: { width: 78, height: 128 }, right: { marginLeft: 15, flex: 1 }, name: { fontSize: 20, fontWeight: "bold", marginTop: 3, marginBottom: 10 }, dir: { fontSize: 15, marginBottom: 3, color: "#686868" }, header: { height: 44, alignItems: "center" }, title: { fontSize: 25, fontWeight: "bold", lineHeight: 44 }, separator: { height: 1, backgroundColor: "#ccc" }});module.exports = ListMovie;

再将index.ios.js文件改成如下:

import React, { Component } from 'react';import { AppRegistry, View,} from 'react-native';var ListMovie = require("./listMovie");var Movie = React.createClass({ render () { return (  <View>  <ListMovie></ListMovie>  </View> ) }});AppRegistry.registerComponent('useComponent', () => Movie);

最终效果:

React-Native中有哪些常用的组件

Navigator组件

使用导航器可以让你在应用的不同场景(页面)间进行切换。其实质上类似于html里导航条功能。

不过导航器页面的跳转需要通过路由对象来分辨不同的场景。

利用renderScene方法,导航栏可以根据指定的路由来渲染场景。

导航器的设置步骤

设置属性initialRoute:初始化route对象,指定默认页面,也就是启动app之后所看到的第一个页面;

configureScene:配置场景动画和手势;

renderScene;渲染场景,参数route(第一步创建并设置的导航器路由对象),navigator(导航器对象)

代码展示:

<Navigator initialRoute={rootRoute} configureScene={(route)=>Navigator.SceneConfigs.PushFromRight} renderScene={ (route,navigator)=>{  var MySceneComponent = route.component;  console.log(MySceneComponent);  console.log(“aaaa”);  return (  <MySceneComponent route={route} navigator={navigator}/>  ) } }/>

示例

创建一个nav.js文件

代码如下:

import React, { Component } from 'react';import { StyleSheet, Text, View, Navigator, TouchableOpacity, TextInput} from 'react-native';// 在进行导航时,需要先构成一些页面,使用Navigator// 创建组件var FirstPage = React.createClass({ getInitialState () { return {text: ""} }, saveText (text) { this.setState({text: text}) }, changePage () { // 把需要传递的值,都放在路由的nextPass属性里 var nextRoute = {  component: SecondPage,  nextPass: {text: this.state.text} }; this.props.navigator.push(nextRoute); }, render () { return (  <View style={[styles.container, {backgroundColor: "cyan"}]}>  <TextInput style={styles.input} placeholder={"请输入"} onChangeText={this.saveText}/>  <TouchableOpacity onPress={this.changePage} style={styles.btn}>   <Text style={styles.btnText}>跳转到下一页</Text>  </TouchableOpacity>  </View> ) }});var SecondPage = React.createClass({ changePage () { this.props.navigator.pop(); }, render () { return (  <View style={[styles.container, {backgroundColor: "yellowgreen"}]}>  <Text>接收到的数据是{this.props.text}</Text>  <TouchableOpacity onPress={this.changePage} style={styles.btn}>   <Text style={styles.btnText}>返回上一页</Text>  </TouchableOpacity>  </View> ) }});var Nav = React.createClass({ render () { // 初始路由,首页 var rootRoute = {  component: FirstPage,  nextPass: {} }; return (  <Navigator  // 第一步需要进行初始路由的设置  initialRoute={rootRoute}  // 第二步设置页面的切换方式  configureScene={(route) => Navigator.SceneConfigs.FloatFromBottom}  // 第三部确定要渲染的场景(页面)  renderScene={(route, navigator) => {   // 找到要渲染的页面   var Component = route.component;   // 渲染时,需要把route和Navigator作为属性传递下去,传递的值也作为属性传递   // ...route.nextPass把route中的nextPass里的数据都传递下去   return <Component {...route.nextPass} text={route.nextPass.text} route={route} navigator={navigator} />  }}  /> ) }});// 实例化样式var styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", alignItems: "center", }, btn: { backgroundColor: "#25f30d", width: 115, height: 30, borderRadius: 5, justifyContent: "center", alignItems: "center" }, btnText: { fontSize: 14, fontWeight: "bold" }, input: { margin: 30, borderWidth: 1, borderColor: "#ccc", height: 30, backgroundColor: "#77ccb1" }});module.exports = Nav;

在index.ios.js文件中代码更改如下:

import React, { Component } from 'react';import { AppRegistry, View,} from 'react-native';var Nav = require("./nav");var NavTest = React.createClass({ render () { return (  <View style={{flex: 1}}>  <Nav></Nav>  </View> ) }});AppRegistry.registerComponent('useComponent', () => NavTest);

TableBarIOS组件

TableBar是放置在屏幕的最下方会有很多平级的标签图标的标签栏,用户可以击内部不同的图标切换屏幕中显示的视图,TableBarIOS只适用于IOS平台

常用属性

  • barTintColor:标签栏的背景颜色

  • tintColor:当前被选中标签图标的颜色

  • unselectedItemTintColor:当前没有被选中的标签图标的颜色

TabBarIOS.Item

TabBarIOS.Item是每个可以点击标签不图标,根据点击的不同显示不同的视图

常用属性

  • title:在图标下面显示的标题文字

  • icon:给当前标签指定一个自定义的图标

  • onPress:当此标签被选中时调用。你应该修改组件的状态来使得selected={true}

  • selected:这个属性决定了子视图是否可见。如果你看到一个空白的页面,很可能是没有选中任何一个标签。

代码展示:

<TabBarIOS.Item title=“movieTest” icon={require(“./passport.png”)} onPress={this.changeTab.bind(this, ”movieTest”)} selected={this.state.selectTab == “movieTest”}> <MovieList></MovieList></TabBarIOS.Item>

示例

创建一个tabBar.js文件

代码如下:

import React, { Component } from 'react';import { TabBarIOS} from 'react-native';//引入三个选项页面(这里引入的是之前做好的几个组件)var Nav = require("./nav");var MovieList = require("./movieList");var ImageTest = require("./image");var TabBarTest = React.createClass({ getInitialState:function () {  //显示当前显示的标签  return {   selectTab: "首页"  } }, changeTab:function (name) {  this.setState({   selectTab:name  }) }, render:function () {  return (   <TabBarIOS barTintColor="#ccc"      tintColor={"red"}      unselectedItemTintColor={"cyan"}   >    {}    <TabBarIOS.Item     title="首页"     icon={require("./images/index.png")}     onPress={this.changeTab.bind(this,"首页")}     selected={this.state.selectTab == "首页"}    >     {}     <Input/>    </TabBarIOS.Item>    <TabBarIOS.Item     title="图片"     icon={require("./images/picture.png")}     onPress={this.changeTab.bind(this,"图片")}     selected={this.state.selectTab == "图片"}    >     {}     <ImageTest/>    </TabBarIOS.Item>    <TabBarIOS.Item     title="电影"     icon={require("./images/movie.png")}     onPress={this.changeTab.bind(this,"电影")}     selected={this.state.selectTab == "电影"}    >     {}     <MovieList/>    </TabBarIOS.Item>   </TabBarIOS>  ) }});module.exports = TabBarTest;

在index.ios.js文件中,代码更改为如下:

import React, { Component } from 'react';import { AppRegistry, View,} from 'react-native';var TabBarTest = require("./tabBar");var TabTest = React.createClass({ render () {  return (   <View style={{flex: 1}}>   <TabBarTest></TabBarTest>   </View>  ) }});AppRegistry.registerComponent('useComponent', () => TabTest);

网络请求

React Native提供了和WEB标准一致的Fetch api,用于满足开发者访问网络的需求。与之前学过的ajax很相似。

fetch()第一个参数为请求地址

fetch(‘https://mywebsite.com/mydata.json');

第二个参数可选,可以用来定制Http请求一些参数

fetch(‘https://mywebsite.com/endpoint/‘, { method: ‘POST', headers: { ‘Accept': ‘application/json', ‘Content-Type': ‘application/json', }, body: JSON.stringify({ firstParam: ‘yourValue', secondParam: ‘yourOtherValue', })})

其中body表示要传输的数据

Fetch 方法会返回一个Promise,需要对返回的数据进行处理

通过链式结构添加then方法进行成功数据处理

如果有错,通过catch方式捕捉

getDate:function () { fetch(url)  .then((res)=>{   return res.json();  })  .then((resData)=>{   this.setState({    loaded:true,    dataSource:this.state.dataSource.cloneWithRows(resData.data.movies)   })  })  .catch((err)=>{   alert(err)  })}

以上就是React-Native中有哪些常用的组件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: React-Native中有哪些常用的组件

本文链接: https://www.lsjlt.com/news/222548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React-Native中有哪些常用的组件
    本篇文章给大家分享的是有关React-Native中有哪些常用的组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。ScrollView组件能够调用移动平台的ScrollView...
    99+
    2023-05-31
    react-native
  • React-Native中一些常用组件的用法详解(一)
    前言本文为大家介绍一下React-Native中一些常用的组件,由于对ES6的语法并没有完全掌握,这里暂时用ES5和ES6混用的语法。View组件View是一个支持Flexbox布局、样式、一些触摸处理、和一些无障碍功能的容器,并且它可以放...
    99+
    2023-05-31
    react-native 常用组件 用法
  • react native和react的区别有哪些
    这篇文章主要介绍react native和react的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!区别:1、React是驱动html dom渲染; React Native是驱动android/ios原生...
    99+
    2023-06-06
  • react native的开发工具有哪些
    这篇文章主要为大家展示了“react native的开发工具有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“react native的开发工具有哪些”这篇文...
    99+
    2024-04-02
  • 实用的React组件库有哪些
    本篇内容介绍了“实用的React组件库有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. tremorTremor 是一个快速构建 D...
    99+
    2023-07-04
  • React中常用的Hook有哪些
    目录一、简介二、使用1、State Hook2、Effect Hook3、Ref Hook一、简介 Hook是React 16.8.0版本增加的新特性/新语法 可以在函数组件中使用 ...
    99+
    2023-01-10
    React Hook原理 React Hook有哪些
  • react组件库有哪些
    本文小编为大家详细介绍“react组件库有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“react组件库有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 ...
    99+
    2024-04-02
  • react-native-tab-navigator组件怎么用
    小编给大家分享一下react-native-tab-navigator组件怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!要...
    99+
    2024-04-02
  • Flutter与React Native有哪些优点
    本篇内容介绍了“Flutter与React Native有哪些优点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • React组件的写法有哪些
    这篇文章给大家分享的是有关React组件的写法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。React 专注于 view 层,组件化则是 React 的基础,也是其核心理念...
    99+
    2024-04-02
  • React中Native悬浮按钮组件怎么用
    小编给大家分享一下React中Native悬浮按钮组件怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!React Nativ...
    99+
    2024-04-02
  • React-Native组件之Modal怎么用
    这篇文章将为大家详细讲解有关React-Native组件之Modal怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Modal组件可以用来覆盖包含React Nati...
    99+
    2024-04-02
  • react可用的ui组件库有哪些
    这篇文章主要讲解了“react可用的ui组件库有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“react可用的ui组件库有哪些”吧! ...
    99+
    2024-04-02
  • React-Native之截图组件react-native-view-shot的介绍与使用小结
    目录一、现象二、解决三、总结:一、现象 1、需求:把某展示页面进行截取保存到相册、并可进行以海报的形式分享出去; 2、支持iOS和安卓 二、解决 1、安装: npm i --save...
    99+
    2024-04-02
  • springcloud的常用组件有哪些
    Spring Cloud是一个分布式系统的开发工具包,它提供了一系列常用组件来帮助开发者构建高可用的、可伸缩的分布式系统。常用的Sp...
    99+
    2023-10-20
    springcloud
  • react组件有哪些缺点
    这篇文章将为大家详细讲解有关react组件有哪些缺点,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 react组件的缺点:1、React本身只...
    99+
    2024-04-02
  • 常用的Vue组件有哪些
    这篇文章主要讲解了“常用的Vue组件有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“常用的Vue组件有哪些”吧!下面这些 Vue 组件,不论对于 Vue...
    99+
    2024-04-02
  • Bootstrap Multiselect常用组件有哪些
    小编给大家分享一下Bootstrap Multiselect常用组件有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • React Native 中限制导入某些组件和模块的方法
    目录限制使用 Touchable限制使用 Image同时限制两者示例有些时候,我们不希望使用某些组件,而是想使用其他组件。这时候,我们可以使用一个名为 no-restric...
    99+
    2022-11-13
    React Native 限制导入 React Native 导入组件模块
  • React创建组件的方式有哪些
    这篇文章主要介绍了React创建组件的方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。React推出后,出于不同的原因先后出现三种定...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作