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

react 和 react native 的开发过程区别

React 和 React Native 虽然都使用 React 思想和语法(函数组件、Hooks、JSX 等),但在 开发流程、渲染机制、UI 组件、样式处理、运行平台 等方面有明显差异。以下是对比总结:

 

✅ 一、开发目的和平台不同

对比项ReactReact Native
应用类型Web 应用(浏览器)移动 App(iOS / Android)
渲染目标HTML + CSS原生组件(View、Text 等)
运行环境浏览器手机系统(通过 JS Bridge)

 

✅ 二、UI 组件不同

React 使用的是 DOM 元素,React Native 使用的是原生组件:

功能React (Web)React Native (App)
容器<div><View>
文本<p> / <span><Text>
图片<img src="" /><Image source={...} />
输入框<input /> / <textarea /><TextInput />
按钮<button><TouchableOpacity> / <Pressable>
表单校验AntD、Form 表单等Formik、react-hook-form 等(配合使用)

 

✅ 三、样式写法不同

项目React(Web)React Native(App)
样式语言CSS / SASS / styled-componentsJS 对象(StyleSheet.create)
单位px、rem、% 等没有单位,默认就是 dp(设备无关像素)
支持的样式基于 CSS 全面支持(动画、伪类等)样式属性有限,不支持如 hover 等特性
响应式布局媒体查询 + vw/vh 等Flex 布局 + Dimensions 响应式方案

示例对比:

// React Web
<div className="box">Hello</div>
<style>.box { color: red; padding: 10px; }
</style>// React Native
<View style={{ color: 'red', padding: 10 }}><Text>Hello</Text>
</View>

✅ 四、开发调试方式不同

对比项ReactReact Native
启动方式npm start → 浏览器访问使用 Expo 或 RN CLI → 手机/模拟器运行
预览方式浏览器iOS / Android 真机 or 模拟器
调试方式浏览器 DevToolsChrome DevTools / React Native Debugger / Flipper
热更新HMR(浏览器自动刷新)Fast Refresh(设备自动刷新)

 

✅ 五、三方库和生态不同

内容ReactReact Native
UI 库AntD / MUI / TailwindCSS 等React Native Elements / NativeBase 等
路由React RouterReact Navigation
状态管理Redux / MobX / Zustand 等同上,但注意需适配原生组件
网络请求Axios / FetchAxios / Fetch / plus 网络状态监听库
动画库Framer Motion / GSAPReanimated / react-native-animatable

 

✅ 六、常见开发差异总结

开发项ReactReact Native
页面跳转React RouterReact Navigation
表单处理AntD Form / react-hook-formFormik / react-hook-form(自适配 RN)
文件上传<input type="file" />需使用原生模块(ImagePicker、DocumentPicker)
通知权限浏览器原生通知原生模块(如 react-native-push-notification
调用摄像头等硬件基本不涉及需使用原生模块(如 expo-camerareact-native-camera

 

✅ 七、打包发布差异

项目ReactReact Native
构建命令npm run build → 生成 dist 静态文件使用 Expo / Xcode / Android Studio 打包成 APK / IPA
部署平台阿里云、Vercel、GitHub Pages 等应用市场(App Store、Google Play)或企业内部发布

 

http://www.lryc.cn/news/608108.html

相关文章:

  • Javascript面试题及详细答案150道之(016-030)
  • 【REACT18.x】使用vite创建的项目无法启动,报错TypeError: crypto.hash is not a function解决方法
  • NEXT.js 打包部署到服务器
  • OLTP,OLAP,HTAP是什么,数据库该怎么选
  • React ahooks——副作用类hooks之useThrottleEffect
  • 超平面(Hyperplane)是什么?
  • 深入 Go 底层原理(十四):timer 的实现与高性能定时器
  • 卡尔曼滤波轨迹跟踪算法与MATLAB实现
  • 关于Web前端安全防御XSS攻防的几点考虑
  • 【软考中级网络工程师】知识点之 VRRP
  • 智能学号抽取系统V5.6.4重磅发布
  • 【Docker】RK3576-Debian上使用Docker安装Ubuntu22.04+ROS2
  • 28Rsync免密传输与定时备份
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第9章 性能调优
  • leetcode热题——组合
  • Android性能优化--16K对齐深入解析及适配指南
  • 【数据结构初阶】--排序(二)--直接选择排序,堆排序
  • AI Agent开发学习系列 - LangGraph(10): 带有循环的Looping Graph(练习解答)
  • JavaScript特殊集合WeakMap 的使用及场景介绍
  • 【昇腾推理PaddleOCR】生产级部署方式
  • 什么是AWS Region和AWS Availability Zones
  • php完整处理word中表单数据的方法
  • Word怎样转换为PDF
  • 使用AWS免费EC2自建RustDesk远程桌面连接服务
  • 【iOS】3GShare仿写
  • 市政污水厂变频器联网改造方案-profibus转ethernet ip网关(通俗版)
  • 疏老师-python训练营-Day33 MLP神经网络的训练
  • 详解Python标准库之命令行界面库
  • 【05】OpenCV C#——OpenCvSharp 图像基本操作---转灰度图、边缘提取、兴趣区域ROI,图像叠加
  • MyBatisPlus之CRUD接口(IService与BaseMapper)