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

news2024/12/27 19:47:28

原生基础

安装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.props
            const {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.coloradmin.cn/o/496074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

画图以及代码分析结合的循环队列的实现

循环队列的实现 概念以及结构实现初始化判空判满入队出队从队头获得元素从队尾获得元素释放 概念以及结构 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”…

优化| 割平面算法(2): Cover Cuts, Strengthening, Separation及其拓展(理论与实战详解)

【MIP Cutting plane method】-1: Cover cuts MIP的标准形式什么是Cover CutsCover Cuts的详细案例Stronger Cover Cuts及其案例Separation for Cover Cuts用Separation生成 Cover Cuts的详细例子调用Gurobi验证Cover Cuts和Stronger Cover Cuts的作用线性松弛模型的解加入Cove…

领域分类/识别方案

将用户输入与预定义的领域进行匹配 针对领域分类任务&#xff0c;如上图所示&#xff0c;我们首先会从不同的业务中收集大量的业务数据&#xff0c;作为基础的训练数据&#xff0c;虽然这些数据来自不同的业务&#xff0c;但是依然存在一些问题&#xff0c;主要有以下两方面&am…

YOLOv7测距+碰撞检测

YOLOv7测距碰撞检测 1. 相关配置2. 测距原理3. 标定和测距4. 碰撞检测4.1 相关代码4.2 主代码 5. 实验效果 相关链接 1. YOLOV5 单目测距&#xff08;python&#xff09; 2. YOLOV7 单目测距&#xff08;python&#xff09; 3. 具体实现效果已在Bilibili发布&#xff0c;点击…

vscode+gdbserver实现图形化调试Linux应用

一、环境&#xff1a; 1.远程Linux主机Ubuntu22.04&#xff1b; 2.vscode 1.76 二、环境搭建 1.Ubuntu 安装gdb、gdbserver、openssh-server 2.vscode 安装Remote Development、C/C 3.远程连接Linux 点击左下角的绿色按钮&#xff0c;然后选择connect to host----->…

Day1 组队竞赛、删除公共字符

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; C/C相关题解 &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 16.11.17 文章目录 选择题1.C基础语法 编程题组队竞赛删除公共字符 选择题 1.C基础语法 题目&#xff1a;以下程序的运行结果是&am…

RSA加密为什么能保证安全

问题&#xff1a;我们都知道RSA加密是安全的&#xff0c;但是我们在使用的使用&#xff0c;怎么使用才能保证数据的安全传输呢&#xff1f; 一、原则&#xff1a;公钥机密、私钥解密、私钥签名、公钥验签 公钥私钥都可以加密和解密数据&#xff0c;但是因为持有公钥和私钥的人…

【Elsevier】中科院2区TOP, 高被引119篇, 稳定检索22年, 1周可见刊,5月15截稿~

一、【期刊简介】 中科院2区软计算类SCI (TOP) 【期刊概况】IF:8.0-9.0, JCR1区, 中科院2区&#xff1b; 【终审周期】走期刊部系统&#xff0c;3-5个月左右录用&#xff1b; 【检索情况】SCI&EI双检&#xff1b;正刊&#xff1b; 【数据库收录年份】2001年&#xff1…

【测试】概念篇

目录 &#x1f31f;一、了解软件测试 &#x1f308;1、什么是软件测试 &#x1f308;2、软件测试与开发的区别&#xff08;常考&#xff09; &#x1f308;3、一个优秀的软件测试人员应该具备的素质 &#x1f31f;二、需求与测试用例、软件错误&#xff0c;软件生…

一旦80%的开发人员都开始利用ChatGPT提升工作效率后,挑战与机遇在哪里?

其实我现在已经开始逐渐开始喜欢上ChatGPT了&#xff0c;上班时间摸摸鱼&#xff0c;和ChatGPT畅谈一下理想&#xff0c;遇见一些不太熟练的代码也懒得去上网查了&#xff0c;直接问一问ChatGPT&#xff0c;然后自己再放置到自己的代码里&#xff0c;改一改&#xff0c;很完美。…

快递出入库管理APP开发 收发快递更方便

网购的盛行让收发快递成为很多人日常生活必不可少的一个环节&#xff0c;对于快递公司来说&#xff0c;每天有那么多的快递&#xff0c;如果没有一个好用的管理系统的话&#xff0c;不仅麻烦还很容易出现纰漏&#xff0c;所以快递出入库管理APP软件就显得很必要了。 快递…

python-imageio库简单使用

目录 imread_v2() get_reader() 使用imageio方法将彩色视频变为黑白视频 相关&#xff1a;python-动图制作及分解_觅远的博客-CSDN博客 imageio是一个用于读取和写入图像及视频数据的库&#xff0c;支持多种格式&#xff0c;且可以使用NumPy数组进行操作。常用方法&#xff…

JS逆向 -- 某平台登录加密分析

一、打开网站&#xff0c;使用账号密码登录 账号&#xff1a;aiyou123.com 密码&#xff1a;123456 二、通过F12抓包&#xff0c;抓到如下数据&#xff0c;发现密码加密了 三、加密结果是32位&#xff0c;首先考虑是md5加密。 四、全局搜索pwd&#xff0c;点击右上角&#xf…

C# 纯text文本字符添加上下角标

工作的需求&#xff0c;需要在GridView列HeaderText中插入带入带有上标和下标的字符串&#xff0c;比如这样的一个字符串&#xff1a;。。 解决办法&#xff1a;使用转义字符加Unicode的NumEntity就可以实现了。定义字符串如下&#xff1a;"O"。其中O为 。 实现&…

Linux系统目录树结构以及解释

FHS标准 Filesystem Hierarchy Standard&#xff08;文件系统层次化标准&#xff09;的缩写&#xff0c;多数Linux版本采用这种文件组织形式&#xff0c;类似于Windows操作系统中c盘的文件目录&#xff0c;FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最…

rk平台调试音频(从驱动到apk)

需要实现的功能&#xff1a; 输入&#xff1a;hdmiin、uvc、mic可以实时切换 输出&#xff1a;耳机和HDMI OUT同时输出声音 这里注意&#xff1a;mic是存在hedset情况&#xff0c;4节耳机&#xff0c;即可输出又可输出同时进行 开发情况&#xff1a; 一、先熟悉大致的Andro…

【24】核心易中期刊推荐——图像处理研究大数据及智能处理研究

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

springboot内嵌tomcat文件上传路径不存在问题原因

错误提示: 临时文件目录被删除,导致文件上传报错,我们使用的是linux系统,10天没有使用,就会被删除 代码: 解决办法: 配置文件中自定义临时文件上传目录 server:port: 9090tomcat:basedir: /crm/tmp 特殊情况: 当我上传小文件的时候可以上传成功,大文件的时候上传失败 猜测可…

利用Linux的corntab定时任务和shell脚本,解决傻妞卡死、发信息没反应、一直卡在即将重启、查询数据异常等问题

利用Linux的corntab定时任务和shell脚本&#xff0c;解决傻妞卡死、数据异常等问题 安装corntab创建shell脚本添加corntab定时任务 原理 定时杀死傻妞进程&#xff0c;并自动重启傻妞 安装corntab Linux crontab是用来定期执行程序的命令。 CentOS安装命令如下 yum -y insta…

【Android -- 开发工具】Source Insight 4.0 安装和使用教程

简介 Source Insight 工具是一款功能强大的代码阅读器&#xff0c;它能使大量的代码产生联系&#xff0c;方便阅读&#xff0c;而且支持各种语言的程序代码。 安装 & 激活 1. 下载 下载地址 直接点击下载即可&#xff0c;我下载的是 4.0 版本。 然后按照步骤安装完成即…