RN系统精讲-----基础了解

news/2024/11/17 3:29:27/

原生基础

安装SDK与Tools

preference > appearance > systemSetting > Android sdk

如何连接设备,以及开发中的常用的adb命令

  1. USB连接设备

    adb devices 查看连接设备

  2. wifi网络连接设备

    adb connect ip(手机自己的ip地址,可以通过设置->关于手机->状态信息->ip地址)

    adb disconnect ip (断开连接)

  3. adb启动,停止,查看设备,端口映射,进入沙盒

    adb kill-server 停止

    adb start-server 启动

    adb devices 查看设备

    adb reverse tcp:8081 tcp:8081 端口映射

    adb shell 进入沙盒

    ls 拆看详细

    cd sdcard/ 进入sd卡

    adb push 文件 上传到手机上

    adb pull 文件 把文件拉出来 弄到电脑

移动端ui结构和设备特性

  1. 移动端应用ui结构

  2. 移动端特有的交互形式

  3. 移动端页面载体

    • 弹窗 

RN开发中常见的原生文件

  1. 配置:manifest(系统权限,第三方原数据) gradle(打包构建,RN原生的依赖)

  2. 应用:Application(应用初始化),String(应用名称),mipmap(应用的图标)

  3. 桥接:ReactPackage,ReactModule,ViewManager

RN和原生组件对应

原生开发语言

  1. Android : Java vs Kotlin

  2. IOS: OC vs Swift

移动端应用发布

  1. debug包和release包

  2. 应用签名:生成和使用

    1. android studio生成:

      Build-> Generate Signed Bundle / APK -> APK -> Create New

      选中android工程 点f4 ->Signing Configs ->新添加release

  3. 国内主流应用市场:AppStore + 华米OV

移动端特有的生产热修复机制

  1. 热修复机制的产生的原因

  2. RN热修复框架选择

    1. (Pushy - 极速热更新 (reactnative.cn))

    2. Visual Studio App Center | iOS, Android, Xamarin & React Native | Sign In

  3. 热修复应用场景和注意事项

移动端设备版本兼容选择

  1. Android

    • 尺寸: 1080 * 1920 以上

    • 系统版本:安卓 5.0 以上

  2. IOS

    • 尺寸:375 * 667 以上

    • 系统版本:IOS 10 以上

工程结构和React必备知识

工程目录结构:了解关键文件的作用

  1. index.js . App.js

  2. package.json,package-lock.json

  3. babel.config.js app.json

  4. /node_modules

  5. /android /ios

构建通用源码目录结构

入口函数,export和import

  1. index.js

  2. 自定义模块导出

  3. 使用自定义模块导入

class组件和函数式组件

  1. class组件

    • 有状态,每次都是修改的同一个状态

    • 基于生命周期的管理

    • 面向对象的好处:易于理解,适合新手

  2. 函数式hi组件

    • 无状态,每次刷新都是生成一个新的状态

    • 基于状态变化的管理

    • 函数式的好处:简洁,模块代码少,易于复用

class组件生命周期和常规写法

  1. class组件的标准写法和组件生命周期

    import React from "react";
    import { View } from "react-native";class ClassView extends React.Component{constructor(props){super(props);console.log('constructor...');}componentDidMount(){console.log("componentDidMount....");}componentWillUnmount(){console.log("componentWillUnmount...");}render(){console.log("render....");return(<View style={{width:200,height:200,backgroundColor:'aqua'}}></View>)}
    }export default ClassView;
    
  2. props与state管理ui数据

    class ClassView extends React.Component{constructor(props){super(props); this.state={address:"江苏省南京市",}}componentDidMount(){setTimeout(()=>{this.setState({address:"河南省郑州市"})},2000)}render(){const {name,age,level} = this.propsconst {address} = this.state// console.log(`name=${name},age=${age},level=${level}`);return(<View style={{width:'100%',height:200,backgroundColor:'aqua'}}><Text>{name}</Text><Text>{age}</Text><Text>{level}</Text><Text>{address}</Text></View>)}
    }
    

    父组件

    const App = ()=>{
      
      const [showClassView,setShowClassView] = useState(true);

      // useEffect(()=>{
      //   setTimeout(()=>{
      //     setShowClassView(false)
      //   },2000)
      // },[])


      return (
        <View>
          <ClassView name="zhangsan" age={12} level="top"></ClassView>
        </View>
      );
    }

  3. state和setState

函数式组件的优势和常用hook

  1. 函数式组件的3种写法

    import React from "react"
    import {View,Text} from 'react-native'export default ()=> {return (<View style={{width:'100%',height:200,backgroundColor:'pink'}}><Text>FunctionView</Text></View>);
    }function fun1(){return (<View style={{width:'100%',height:200,backgroundColor:'pink'}}><Text>FunctionView</Text></View>);
    }const fun2 = ()=>{return (<View style={{width:'100%',height:200,backgroundColor:'pink'}}><Text>FunctionView</Text></View>);
    }
    
  2. props和useState管理ui数据

    export default (props)=> {const {name ,age,level} = props// console.log(`name=${name},age=${age},level=${level}`);const [address,setAddress] = useState("河南省郑州市");//  useEffect 可以写多个useEffect(()=>{setTimeout(()=>{setAddress('浙江省杭州市')},2000)},[])useEffect(()=>{console.log(`address=${address}`);},[address])return (<View style={{width:'100%',height:200,backgroundColor:'pink'}}><Text style={{fontSize:20,color:'black'}}>{`name=${name},age=${age},level=${level}`}</Text><Text style={{fontSize:20,color:"yellow"}}>{`address=${address}`}</Text></View>);
    }
    
  3. 常用hook:useState,useEffect,useRef,useWindowDimension,useColorScheme


http://www.ppmy.cn/news/60051.html

相关文章

基于J2EE的B2C电子商务系统开发与实现

摘要 当今社会,科学技术突飞猛进,知识经济初见端倪。电子商务作为一种新型的贸易方式,极大地促进了全球经济贸易的发展,同时也正在改变人们的生活方式和思想观念。电子商务是指整个贸易活动实现电子化,交易各方以电子交易方式而进行的商业交易。世界贸易组织电子商务专题报告定…

python 统计pdf页数

python 统计pdf页数 import os import PyPDF2 import sys, jm, traceback from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QAction from PyQt5 import QtCore, QtGui, QtWidgets def get_all_file_by_type(path, type(), get_all_dirs True): # 获得以…

【华为OD机试 2023最新 】统一限载货物数最小值(C语言题解 100%)

文章目录 题目描述输入描述输出描述备注用例题目解析代码思路C语言题目描述 火车站附近的货物中转站负责将到站货物运往仓库,小明在中转站负责调度2K辆中转车(K辆干货中转车,K辆湿货中转车)。 货物由不同供货商从各地发来,各地的货物是依次进站,然后小明按照卸货顺序依…

【网络安全】记一次杀猪盘渗透实战

看起来非常假的网站&#xff0c;这个网站是没有 cdn 的用的是 thinkphpk 框架搭建的。 先打一波 poc 没有效果 访问一下后台直接在 url 后面加/admin。 一个开源的 cms 还没有验证码尝试用 burp 进行爆破&#xff0c;首先在火狐上设置代理 ip 为 127.0.0.1 代理端口为 8081。 B…

1、Flutter使用总结(RichText、Container)

1、创建Flutter项目 flutter create DemoName 2、运行项目 flutter run -d ‘iPhone 14 Pro Max’ 注: 当运用Android Studio时、选择安卓模拟器运行项目、如果项目路径有中文名称: 那么运行报错、如果直接在项目路径下,采用终端运行安卓模拟器、可执行如下命令 flutter ru…

【JavaEE进阶】——第五节.SpringMVC学习介绍(上)(获取参数,传递参数——关于前后端传参交互的总结、from表单、Ajax数据提交)

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;JavaEE进阶 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 目录 文章目…

车载多屏互动联动动画版本同屏幕大小情况方案设计--众筹项目

hi&#xff0c;粉丝朋友们&#xff1a; 背景及成果展示 本节带大家来开始学习多屏幕互动的动画版本设计&#xff0c;回忆一下我们已经在之前blog和wms课程中学习了多屏互动的非动画版本如下&#xff1a; 再来看看今天我们想要实现有动画版本的成果&#xff1a; 是不是相比之…

下一代大数据分布式存储技术Apache Ozone初步研究

文章目录 概述定义特性架构总体架构写数据读数据 部署安装方式安装Docker启动Docker-compose启动企业预置型(On Premise)安装 实践命令行接口Ofs (Hadoop兼容)Recon API 概述 定义 Apache Ozone 官网地址 https://ozone.apache.org/ 最新版本1.3.0 Apache Ozone 官网最新文档地…