当前位置: 首页 > news >正文

React Native基础知识点

1、组件

与react编写web应用不同,不是使用div、span等标签。而是使用RN官方提供的组件,如View、Text等组件来搭建页面

2、宽高

React Native 中的尺寸都是无单位的,表示的是与设备像素密度无关的逻辑像素点。默认值为auto

 <View style={{width: 50,height: 50 }}/>


上面创建了一个View组件,它的宽高都是50,那么无论在什么手机上,它显示的大小都是一样的。
宽高还可以使用百分比来设置:

<View style={{width:'20%', height: 50 }} />

注意:百分比用字符串,数值直接写
以及接下来要讲的布局,通过布局来控制宽高,而不再通过widthheight来指定宽高了。

3、样式写法的一些区别

  • 我们可以简单的把View,Text想象为html中的div或span,不同的地方在于css中,我们在一个元素中指定颜色,字体等,那么这个元素内部所有的元素都会继承这个元素的颜色或者字体,而在React Native中文本只能放在Text组件内,也不允许给View组件设置颜色、字体等属性
  • 样式名基本上是遵循了 web 上的 CSS的命名,只是按照JS的语法要求使用了驼峰命名法,例如将background-color改为backgroundColor。
  • style属性可以是一个普通的 JavaScript 对象。这是最简单的用法,因而在示例代码中很常见。你还可以传入一个数组--在数组中位置居后的样式对象比居前的优先级更高,这样你可以间接实现样式的继承。

在真实项目中,我们一般会使用StyleSheet.create来创建样式对象

import React from 'react'; 
import {View,Text,StyleSheet} from'react-native';
class App extends React.Component {render(){return(<View style={styles.container}><Text>Hello world</Text></View>);}
}const styles = StyleSheet.create({
container: {backgroundColor: ' red',
}
  • 在React Native的组件 View组件虽然有一系列的触摸处理函数,但是想要监听到用户的操作是点击,还是不方便的。所以React Native提供了一系列的Touchable组件,专门用于处理点击事件。比如: TouchableOpacity, TouchableNativeFeedback,TouchableHighlight等。

这些组件都可以监听到一下的事件:

  • onBlur :失去焦点事件
  • onFocus :得到焦点事件
  • onLayout: 当加载或者布局改变的事件
  • onLongPress :长按事件
  • onPress :触摸操作结束时调用,相当于点击
  • onPressIn :只要按下并调用了touchable元素,就会调用此方法,且是在onPress方法之前调用的
  • onPressOut:触摸释放后立即调用,且是在onPress方法之前调用
  • 最常用的方法无疑是onPress

4、滚动视图
在html中,如果页面内容超过了屏幕展示的高度,浏览器会自动出现滚动条。我们也可以直接给div设置一个固定的高度,再设置overflow:scroll,就可以让div具有滚动效果。但是在React Native中如果我们需要一个滚动效果,我们需要使用一个新的组件 ScrollView或者FlatList。

ScrollView适合用来显示数量不多的滚动元素。放置在ScrollView中的所有组件都会被渲染,哪怕有些组件因为内容太长被挤出了屏幕外。如果你需要显示较长的滚动列表,那么应该使用功能差不多但性能更好的FlatList组件。

FlatList组件不仅性能很好,还拥有很多其他的优点支持水平布局模式

  • 行组件显示或隐藏时可配置回调事件
  • 支持单独的头部组件
  • 支持单独的尾部组件
  • 支持自定义行间分隔线
  • 支持下拉刷新
  • 演示模式
  • 支持上拉加载
  • 支持跳转到指定行(ScrollToIndex )
  • 支持多列布局
http://www.lryc.cn/news/37350.html

相关文章:

  • nginx 平滑升级
  • 数据结构——链表OJ题目讲解(2)
  • GitHub上线重量级分布式事务笔记,再也不怕面试官问分布式了
  • C++语法规则1(C++面向对象 )
  • Web漏洞-CSRF漏洞
  • Python3-面向对象
  • 拐点!新能源车交付均价首次「低于」燃油车,智能电动成新爆点
  • JavaScript String 字符串对象实例合集
  • 实习生培养计划
  • 【服务器管理】Wordpress服务器内存占用太高(优化方案详解)
  • 【ECCV 2022】76小时动捕,最大规模数字人多模态数据集开源
  • 联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建
  • Android 单元测试问题总结(Robolectric+JUnit)
  • 专项攻克——二叉树
  • PACS系统源码 PACS源码 三维重建PACS源码
  • 利用Mysql存储过程造百万级数据
  • Vue2组件之间的传值通信
  • Spring Boot官方例子《Developing Your First Spring Boot Application》无法运行
  • 数据结构(3)— 线性表之顺序存储详解介绍(含代码)
  • ChatGPT正当时,让我们一起深耕智能内容生成和智能内容增强领域
  • 天梯赛训练L1-019 (谁先倒)
  • MySQL DQL语句基础(一)
  • ccc-pytorch-LSTM(8)
  • 教育小程序开发解决方案
  • 动态规划之股票问题大总结
  • 我来跟你讲vue进阶
  • #847(Div3)E. Vlad and a Pair of Numbers
  • 怎么把pdf转换成图片?这个方法你值得拥有
  • go语言使用append向二维数组添加一维数组
  • YOLOv5训练大规模的遥感实例分割数据集 iSAID从切图到数据集制作及训练