zoukankan      html  css  js  c++  java
  • React Native

    React Native

    安装

    1. 配置好 node 环境
    2. npm install -g react-native-cli

    运行项目

    1. react-native init yourproject --version 0.44.3
      • 注意: 当前的工作目录下要没有 yourproject 目录; 一定要加上 --version 0.44.3, 如果不加上去默认是生成最新版本的工程, 老的电脑可能因为报错而无法运行; 如果你使用的 zsh 安装的 node, 那么请在系统自带的 Terminal 中设置启动的 shell 为登录 shell, 因为 react-native 的一些操作需要打开 Terminal 执行 node相关命令, 主要就是执行 package.sh, 否则模拟器会出现 bundle 之类的错误; 也可以尝试一下 react-native bundle --entry-file index.js --bundle-output ./ios/bundle/index.ios.jsbundle --platform ios --assets-dest ./ios/bundle --dev false
    2. cd yourproject
    3. react-native run-ios

    常用组件

    获取屏幕像素

    1. import { Dimensions } from 'react-native'
    2. Dimensions.get('window') 获取对象, 有如下属性
      • fontScale
      • scale
      • width
      • height

    View

    • 属性
      • flex: flex 与 flexWrap: 'wrap' 不要一起用
      • transform
      • background 系列
      • opacity
      • overflow: hidden or visible
      • elevation: 类似 z-index
      • style
        1. width
        2. height

    Image

    • 属性

      • source: 图片路径
        1. uri: http://网络地址
        2. require('./本地地址')
      • style
        1. resizeMode: cover(默认), contain, stretch
    • 注意

      • 一定要指定 width 和 height

    TextInput

    • 属性
      • value: 默认文字, 但是回车键删除不掉
      • keyboardType: enum('number-pad', '')
      • multiline: true or false, 是否多行
      • password: true or false
      • placeholder: 占位置

    Alert

    • 使用
      • Alert.alert('content')

    Touchable 系列

    • TouchableOpacity

      • 属性
        • activeOpacity
        • onPress
        • onPressIn
        • onPressOut
        • onLongPress

    ScrollView

    • 属性

      • horizontal: true of false
      • onScroll
      • showHorizontalScrollIndicator
      • showVerticalScrollIndicator
      • pagingEnabled
      • scrollEnabled
      • scrollToTop
      • onScrollEndDrag
      • onScrollBeginDrag
      • onMomentumEnd: 滚动结束的那一帧调用
    • 方法

      • scrollResponderScrollTo({x: offsetX, y: offsetY, animated: true or false})
    • 注意

      • ScrollView 需要给定高度才会有效, 但是一般也不给高度, 也不设置 flex 属性, 而是放内部的元素将 ScrollView 撑起来

    ListView

    • 套路代码
    
    var dataSource = ListView.DataSource({rowHasChanged: (r1, r2) => r1 != r2});
    this.state = {
        dataSource: dataSource.cloneWithRows(['row1', 'row2', 'row3'])
    }
    
    render() {
        return (
            <ListView dataSource={this.state.dataSource}
            renderRow={(rowData) => <Text>{rowData}</Text>}
            />
            </ListView>
        );
    }
    
    • 上面的套路代码, 在 renderRow 中的回调函数太过简单, 一般回调是这样子的

      renderRow = (rowData, sectionId, rowId, highlightRow) => {
        	// rowData 为数据
        	// sectionId 为页, 列斯通讯里的字母开头序列
        	// rowId 为 row 的 index, 是在 section 中的 index
        	// highlightRow 为高亮的 row
      };
      
    • 还可以为 ListView 定义 getSectionHeaderData, getRowData, renderRow, renderSectionHeader, 这些在实现的时候查看文档即可

    RefreshControl

    • 属性
      • onRefresh
      • refreshing: true of false, 通知是否需要刷新

    Github tabbar

    • 使用 react-native-tab-navigator, 支持跨平台
    • 查看文档
    • 需要自定义 Header
    • 在 Native App 中, Tabbar 占据了整个屏幕, 其次它的每一个子页面存放的是 Navigator, Navigator 中再放我们的组件, 这与 H5+ 的 Vue 有一些不同
  • 相关阅读:
    delphi中WMI的使用(网卡是否接入)
    Delphi中常用字符串处理函数
    [Thiinking in Java]自闭学习之路(三)接口下
    [Thiinking in Java]自闭学习之路(三)接口上
    [Thiinking in Java]自闭学习之路(二)抽象类和抽象方法
    [Thiinking in Java]自闭学习之路(一)构造器
    Fragment生命周期以及使用时的小问题
    SlidingMenu的使用详解
    【Android】用Cubism 2制作自己的Live2D——官方App样例源码学习(4)!
    【Android】用Cubism 2制作自己的Live2D——官方App样例源码学习(3)!
  • 原文地址:https://www.cnblogs.com/megachen/p/11134748.html
Copyright © 2011-2022 走看看