ChatGPT解决这个技术问题 Extra ChatGPT

React Native 和 React 有什么区别?

这个问题的答案是社区的努力。编辑现有答案以改进这篇文章。它目前不接受新的答案或交互。

出于好奇,我开始学习 React,想知道 React 和 React Native 之间的区别——尽管使用 Google 找不到令人满意的答案。 React 和 React Native 似乎具有相同的格式。它们有完全不同的语法吗?

当大多数人问这个问题只是想知道他们是多么可互换时,每个人都在给出一个字典响应:将他们的 React 代码移植到 React Native 有多容易?如果你想在 iPad 上使用它,你是否需要将 Web 应用程序的前端重写为不同的 React 代码?有何不同?
简短的回答是 react-native 为 iOS、Android 和 Windows Mobile 构建移动应用程序,您可以编译并放入应用程序商店供用户安装。 Reactjs 用于构建用于 Web 浏览器的网页。两者都使用可重用的组件,但是用于渲染组件中元素的语法(使用 JSX)是不同的。 React JSX 渲染类似 html 的组件,如 <h1><p> 等。其中 react-native 渲染原生应用视图组件,如 <View><Text><Image><ScrollView>,因此您不能直接除非您返工/替换所有元素,否则重用您的 UI 组件代码。
React 是一个用于开发 Web 应用程序前端的 Java 脚本库。React Native 用于基于移动的应用程序。

u
ugohr

ReactJS 是一个 JavaScript 库,支持前端 Web 并在服务器上运行,用于构建用户界面和 Web 应用程序。它遵循可重用组件的概念。

React Native 是一个移动框架,它利用主机上可用的 JavaScript 引擎,允许您使用 JavaScript 为不同平台(iOS、Android 和 Windows Mobile)构建移动应用程序,允许您使用 ReactJS 构建可重用的组件和与本机组件通信 further explanation

两者都遵循 JavaScript 的 JSX 语法扩展。在后台编译为 React.createElement 调用。 JSX in-depth

两者都是由 Facebook 开源的。


那么,如果我在 react native 中构建一个应用程序,是否可以在 reactJS 中重用它的任何/全部,反之亦然?
@MelAdane 海报可能指的是在 NodeJS 上使用 ReactJS 库来创建预构建文件(使用 Webpack 之类的东西),然后可以将其作为静态文件提供给客户端。
如果我使用 react 构建 webapp,是否可以在使用 react native 的移动应用程序中使用相同的 HTML/JS 代码?
@RaviManiyar 不,您可以重用您的业务逻辑,但不能重用您的 ui 代码。 React Native 使用原生 ui 组件,而 React.JS 使用的是 web 并且 ui 是使用 html 组件和 css 构建的
React Native 将提供所有必需的工具来进行编码,就像您使用 React 一样。 React native 为您提供 Views 而不是 Divs 等。
A
Abdelrahman Anwar

这是React project

在 Facebook,他们发明了 React,因此 JavaScript 可以使用虚拟 DOM 模型更快地操作网站 DOM。

与仅刷新部分页面的 React virtual-dom model 相比,DOM 完全刷新速度较慢(阅读:部分刷新)。

您可能从这个 video 中了解到,Facebook 没有发明 React,因为他们立即明白部分刷新会比传统刷新更快。最初他们需要一种方法来减少 Facebook 应用程序的重新构建时间,幸运的是,这使部分 DOM 刷新变得生动起来。

React native 只是 React 的结果。它是一个使用 JavaScript 构建原生应用程序的平台。

在使用 React native 之前,您需要了解 Java 或 Android 的 Kotlin 和 iPhone 和 iPad 的 Swift 或 Objective-C 才能创建原生应用程序。

使用 React Native 可以在 JavaScript 中模仿本机应用程序的行为,最终,您将获得特定于平台的代码作为输出。如果您需要进一步优化您的应用程序,您甚至可以将本机代码与 JavaScript 混合使用。

正如 Olivia Bishop 在 video 中所说,85% 的 React native 代码库可以在平台之间共享。这些将是应用程序通常使用的组件和通用逻辑。

15% 的代码是特定于平台的。特定于平台的 JavaScript 赋予了平台风味(并使体验有所不同)。

很酷的是这个特定于平台的代码——已经写好了,所以你只需要使用它。


我个人更喜欢这个答案,因为它更详细,提供了进一步解释的链接。
我也喜欢这个答案。 “在 React Native 之前……”别忘了还有 Xamarin。 ;)
@AspUpload 或颤动
那么,出于好奇,React Native 是否仍然构建 Web 应用程序?还是只能用它构建 Android 和 IOS 应用程序?我仍然对此感到困惑。
u
ugohr

反应:

React 是一个用于构建用户界面的声明式、高效且灵活的 JavaScript 库。

反应原生:

React Native 允许您仅使用 JavaScript 构建移动应用程序。它使用与 React 相同的设计,让您可以从声明性组件组成丰富的移动 UI。使用 React Native,您无需构建“移动 Web 应用程序”、“HTML5 应用程序”或“混合应用程序”。你构建了一个真正的移动应用程序,它与使用 Objective-C 或 Java 构建的应用程序没有区别。 React Native 使用与常规 iOS 和 Android 应用程序相同的基本 UI 构建块。您只需使用 JavaScript 和 React 将这些构建块组合在一起。 React Native 让您可以更快地构建应用程序。无需重新编译,您可以立即重新加载您的应用程序。通过热重载,您甚至可以在保留应用程序状态的同时运行新代码。试一试——这是一种神奇的体验。 React Native 与用 Objective-C、Java 或 Swift 编写的组件顺利结合。如果您需要优化应用程序的某些方面,可以很容易地使用本机代码。在 React Native 中构建应用程序的一部分也很容易,并且直接使用本机代码构建应用程序的一部分——这就是 Facebook 应用程序的工作方式。

所以基本上 React 是您的网络应用程序视图的 UI 库,使用 javascriptJSXReact native 是React 顶部的一个额外库,用于为 iOSAndroid 设备制作本机应用程序。

反应代码示例:

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }

  componentDidMount() {
    this.timerID = setInterval(
      () => this.tick(),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  tick() {
    this.setState({
      date: new Date()
    });
  }

  render() {
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>It is {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }
}

ReactDOM.render(
  <Clock />,
  document.getElementById('root')
);

React Native 代码示例:

import React, { Component } from 'react';
import { Text, View } from 'react-native';

class WhyReactNativeIsSoGreat extends Component {
  render() {
    return (
      <View>
        <Text>
          If you like React on the web, you'll like React Native.
        </Text>
        <Text>
          You just use native components like 'View' and 'Text',
          instead of web components like 'div' and 'span'.
        </Text>
      </View>
    );
  }
}

有关 React 的更多信息,请访问由 facebook 团队创建的官方网站:

https://reactjs.org/

有关 React Native 的更多信息,请访问下面的 React Native 网站:

https://reactnative.dev/


您的代码示例很有用,但最好看到在每个框架中实现的 SAME 组件
你的答案应该是公认的,我来这里是想看看 React 和 React Native 是否具有相同的架构,以及代码看起来是否相同,而不是两个库的定义。
我想补充一点,如果你使用原生原生代码,你实际上只有两行代码,其中之一是为插座自动设置的(取决于)。是的,您需要一个日期格式化程序,但仍然只有一行。当它的代码行数比实际的原生应用程序多 20 倍时,我很难阅读“这就是为什么 react 很棒”。也就是说,我很欣赏你的回答,甚至喜欢 React on web,因为它在它擅长的领域提供了解决方案。我只是希望更多的人知道如何在没有它的情况下实现它的模式,比较它何时有用与维护噩梦
j
jkdev

首先,相似之处:React 和 React Native (RN) 都旨在创建灵活的用户界面。这些框架有很多好处,但最基本的收获是它们是为 UI 开发而设计的。 Facebook 在 React 之后几年开发了 RN。

React: Facebook 设计这个框架几乎就像在 HTML/XML 中编写 JavaScript,这就是为什么标签被称为“JSX”(JavaScript XML)并且是类似于熟悉的类似 HTML 的标签,例如 <div><p>。 React 的一个标志是表示自定义组件的大写字母标签,例如 <MyFancyNavbar />,它也存在于 RN 中。但是,React 使用 the DOM。 DOM 存在于 HTML,因此 React 用于 Web 开发。

React Native: RN 不使用 HTML,因此不用于 Web 开发。它用于...几乎所有其他事情!移动开发(iOS 和 Android)、智能设备(例如手表、电视)、增强现实等。由于 RN 没有可与之交互的 DOM,而不是使用 React 中使用的相同类型的 HTML 标签,它使用它的自己的标签,然后编译成其他语言。例如,RN 开发人员不使用 <div> 标签,而是使用 RN 的内置 <View> 标签,该标签在后台编译成其他本机代码(例如,Android 上的 android.view;iOS 上的 UIView)。

简而言之:它们非常相似(用于 UI 开发)但用于不同的媒体。


A
Austin Poulson

ReactJS 是一个用于构建 UI 组件层次结构的框架。每个组件都有状态和道具。数据通过 props 从顶层流向底层组件。使用事件处理程序在顶级组件中更新状态。

React Native 使用 React 框架为移动应用构建组件。 React Native 为 iOS 和 Android 平台提供了一组基本组件。 React Native 中的一些组件是 Navigator、TabBar、Text、TextInput、View、ScrollView。这些组件在内部使用原生 iOS UIKit 和 Android UI 组件。 React native 还允许 NativeModules,其中可以在 JavaScript 中使用用 iOS 的 ObjectiveC 和 Android 的 Java 编写的代码。

注意:React Native 作为一个框架允许以与 HTML 和 CSS 类似的语法开发移动应用程序。 React Native 组件在原生开发中有效地替代了 HTML。


S
Suraj Rao

React-Native 是一个用于开发 Android 和 iOS 应用程序的框架,它共享 80% - 90% 的 Javascript 代码。

而 React.js 是用于开发 Web 应用程序的父 Javascript 库。

当你在 React-Native 中经常使用 之类的标签时,React.js 使用诸如

之类的 web html 标签,它们只是 web/移动开发词典中的同义词。对于 React.js,您需要 DOM 来渲染 html 标签的路径,而对于移动应用程序:React-Native 使用 AppRegistry 来注册您的应用程序。

我希望这是对 React.js 和 React-Native 中快速差异/相似之处的简单解释。


React Native 使用了大部分 React.js。当它也直接用于 React Native 构建移动应用程序时,说它是“用于开发 Web 应用程序”是令人困惑的。许多 React Native 应用程序,尤其是较小的应用程序,可以使用 100% 共享的 javascript 代码,而无需任何特定于平台的代码。

C
Community

我们无法准确比较它们。用例存在差异。

(2018 年更新)

反应JS

React 主要关注 Web 开发。

React 的虚拟 DOM 比传统的完全刷新模型更快,因为虚拟 DOM 只刷新页面的一部分。您可以在 React 中重用代码组件,从而节省大量时间。 (您也可以在 React Native 中使用。)作为企业:从服务器到浏览器的完整页面呈现将改善您的 Web 应用程序的 SEO。它提高了调试速度,使您的开发人员的生活更轻松。您可以使用混合移动应用程序开发,如 Cordova 或 Ionic,使用 React 构建移动应用程序,但从许多方面来看,使用 React Native 构建移动应用程序更有效。

反应原生

React 的一个扩展,在移动开发中占有一席之地。

它的主要重点是关于移动用户界面。涵盖了 iOS 和 Android。可重用的 React Native UI 组件和模块允许混合应用程序原生呈现。无需检修您的旧应用程序。您所要做的就是将 React Native UI 组件添加到现有应用程序的代码中,而无需重写。不使用 HTML 来呈现应用程序。提供以类似方式工作的替代组件,因此不难理解它们。因为您的代码不会在 HTML 页面中呈现,这也意味着您将无法重用您之前使用 React 呈现任何类型的 HTML、SVG 或 Canvas 的任何库。 React Native 不是由 web 元素组成的,也不能以相同的方式进行样式设置。再见 CSS 动画!

希望我帮助了你:)


W
Waheed Akhtar

我知道已经有很多答案了,但是在阅读了所有这些之后,我觉得没有人解释这两者之间的架构差异以及这两者是如何工作的,所以我相信仍有解释的余地。

反应

React = Vanilla JS + ES6 + HTML + CSS = JSX = Web Apps(前端)

所以我们先来谈谈 React,因为 React-Native 也是基于 react 的,并且使用了相同的 JS 概念。

React 是一个 JS 库,用于制作美观、灵活、高性能的单页 web 应用程序,所以现在你的脑海中会出现一个问题,什么是单页 web 应用程序。

单页应用

单页应用程序是在浏览器中运行并且在使用过程中不需要重新加载页面的应用程序。您每天都在使用这些类型的应用程序。例如:Gmail、谷歌地图、Facebook 或 GitHub。 SPA 旨在通过尝试模仿浏览器中的“自然”环境来提供出色的用户体验——无需重新加载页面,无需额外的等待时间。它只是您访问的一个网页,然后使用 JavaScript 加载所有其他内容 - 他们严重依赖 JavaScript。 SPA 独立请求标记和数据,并直接在浏览器中呈现页面。我们可以做到这一点,这要归功于 AngularJS、Ember.js、Meteor.js、Knockout.js、React.js、Vue.js 等高级 JavaScript 框架。单页站点有助于将用户保持在一个舒适的 Web 空间中,在该空间中,内容以简单、容易和可操作的方式呈现给用户。

这个怎么运作

现在您知道什么是 SPA,因此您知道它是一个 Web 应用程序,因此它将使用 HTML 元素运行到浏览器中,并使用 JS 来处理与这些元素相关的所有功能。它使用虚拟 DOM 来呈现组件中的新变化。

反应原生

现在你对 react 有了一些了解,那么让我们来谈谈 react-native

React-Native = React (Vanilla JS + ES6 + Bridge between JS and Native code) + Native(iOS, Android) = Mobile Apps(Android, iOS, 也支持 web 但有一些限制)

React-Native 用于使用 React 制作漂亮的跨平台移动应用程序(Android、iOS)。

这个怎么运作

在 React-Native 中有两个线程。

JS 线程 原生线程

所有的 React 代码都在 JS 线程中执行,最终值传递给本机线程,该线程使用最终值在屏幕上绘制布局。

JS 线程执行所有计算并将数据传递给本地,如何?

React 使用 Async Bridge 以 JSON 格式将数据传递给 Native 线程,称为 React-Native

因此,我们使用 Native 组件在 react-native 中制作表示视图,并使用该桥梁在这两个不同的世界之间进行通信。

JS 线程的速度足以执行 JavaScript,而本机线程也足够快以执行本机代码,但由于 React 使用异步桥接器在这两个世界之间进行通信,因此过载此桥接器会导致性能问题。

更新:React-Native 现在正在经历重构阶段,Facebook 团队正在尝试移除异步桥以在 JS 和原生之间同步通信,这个重构的主要部分是 JSI(Javascript 接口)和 fabirc。

JSI:JSI 消除了在 Native(Java/ObjC) 和 Javascript 代码之间建立桥梁的需要。它还消除了将所有信息序列化/反序列化为 JSON 以在两个世界之间进行通信的要求。 JSI 通过关闭 javascript 和原生世界为新的可能性打开了大门。

以下是 JSI 提供的主要内容。

Javascript 接口,它允许我们向 Javascript 运行时注册方法。这些方法可通过 Javascript 世界中的全局对象获得。这些方法可以完全用 C++ 编写,也可以是与 iOS 上的 Objective C 代码和 Android 上的 Java 代码进行通信的一种方式。当前使用传统桥接器在 Javascript 和原生世界之间进行通信的任何原生模块都可以通过用 C++ 编写一个简单的层转换为 JSI 模块。在 iOS 上编写这个层很简单,因为 C++ 可以直接在 Objective C 中运行,因此所有的iOS 框架和代码可直接使用。然而,在 android 上,我们必须加倍努力才能通过 JNI 做到这一点。这些方法可以是完全同步的,这意味着使用 async/await 不是强制性的。

Fabric:Fabirc 是一个新的 UI 层,它允许我们与本机 UI 组件同步通信,根据 docs

Fabric 是 React Native 的新渲染系统,是传统渲染系统的概念演变。核心原则是在 C++ 中统一更多的渲染逻辑,提高与主机平台的互操作性,并解锁 React Native 的新功能。开发于 2018 年开始,2021 年,Facebook 应用程序中的 React Native 得到了新渲染器的支持。

下面说说这两个框架的共同点和不同点。

Feature React React-Native Platform Web Android, IOS, Web Open Source Yes Yes User Interface HTML + CSS Native Components(iOS, Android, Web) Architecture Virtual DOM Virtual DOM + Bridge + Native implementation Animations CSS Animations Native Animations Styling CSS JS Stylesheets Developed通过脸书脸书


真正有见地的答案。谢谢!
很高兴它帮助了你。
这是一个很好的答案+1
@snr 很高兴知道它对您有帮助。
您应该更新您对 better 显示表格的答案
M
Manzoor Samad

简单来说,React 和 React Native 遵循相同的设计原则,只是在设计用户界面的情况下。

React native 有一组单独的标签用于定义移动用户界面,但两者都使用 JSX 来定义组件。这两个系统的主要目的是开发可重用的 UI 组件并通过其组合减少开发工作。如果您正确规划和构建代码,您可以为移动和 Web 使用相同的业务逻辑

无论如何,它是为移动和 Web 构建用户界面的优秀库。


B
Bipon Biswas

React 是一个用于构建用户界面的声明式、高效且灵活的 JavaScript 库。您的组件告诉 React 您要呈现什么 - 然后 React 将在您的数据更改时有效地更新和呈现正确的组件。在这里,ShoppingList 是一个 React 组件类,或 React 组件类型。

React Native 应用程序是一个真正的移动应用程序。使用 React Native,您无需构建“移动 Web 应用程序”、“HTML5 应用程序”或“混合应用程序”。你构建了一个真正的移动应用程序,它与使用 Objective-C 或 Java 构建的应用程序没有区别。 React Native 使用与常规 iOS 和 Android 应用程序相同的基本 UI 构建块。

More info


N
Necronet

ReactJS 是一个核心框架,旨在构建基于响应式模式隔离的组件,您可以将其视为 MVC 的 V,尽管我想说 React 确实带来了不同的感觉,特别是如果您不太熟悉响应式概念.

ReactNative 是另一个层,旨在为常见的 Android 和 iOS 平台提供一组组件。因此代码看起来与 ReactJS 基本相同,因为它是 ReactJS,但它在移动平台上原生加载。您还可以根据操作系统将更复杂和平台相关的 API 与 Java/Objective-C/Swift 连接起来,并在 React 中使用它。


G
Glorfindel

React Native 主要是用 JavaScript 开发的,这意味着您需要入门的大部分代码都可以跨平台共享。 React Native 将使用原生组件进行渲染。 React Native 应用程序使用其目标平台所需的语言开发,iOS 的 Objective-C 或 Swift,Android 的 Java 等。编写的代码不跨平台共享,它们的行为各不相同。他们可以不受任何限制地直接访问平台提供的所有功能。

React 是 Facebook 开发的用于构建用户界面的开源 JavaScript 库。它用于处理 Web 和移动应用程序的视图层。 ReactJS 用于创建可重用的 UI 组件。它是目前 IT 领域最流行的 JavaScript 库之一,背后有强大的基础和庞大的社区。如果你学习 ReactJS,你需要具备 JavaScript、HTML5 和 CSS 的知识。


S
Sharlon M. Balbalosa

React 是 React Native 和 React DOM 的基本抽象,所以如果你要使用 React Native,你还需要 React... 与 Web 相同,但你需要 React DOM 而不是 React Native。

由于 React 是基本抽象,因此一般语法和工作流程是相同的,但您将使用的组件非常不同,因此您需要了解这些差异,这与 React 内联,即所谓的 moto,即“学习一次,随处编写”,因为如果你知道 React(基础抽象),你可以简单地了解平台之间的差异,而无需学习另一种编程语言、语法和工作流程。


i
iPragmatech

React-Native 是一个框架,其中 ReactJS 是一个可用于您的网站的 javascript 库。

React-native 提供默认的核心组件(图像、文本),其中 React 提供了一堆组件并使它们协同工作。


S
S. Sinha

React Native 用于移动应用程序,而 React 用于网站(前端)。两者都是 Facebook 发明的框架。 React Native 是一个跨平台开发框架,这意味着你可以为 IOS 和 Android 编写几乎相同的代码并且它可以工作。我个人对 React Native 了解得更多,所以我将把它留在这里。


N
Nischith

React Js 是一个 Javascript 库,您可以在其中使用 React 开发和运行更快的 Web 应用程序。

React Native 允许您仅使用 JavaScript 构建移动应用程序,它用于移动应用程序开发。更多信息在这里https://facebook.github.io/react-native/docs/getting-started.html


S
Scott Blanch

关于组件生命周期和所有其他花里胡哨的东西,它几乎是相同的。

区别主要在于使用的 JSX 标记。 React 使用类似于 html 的一种。另一个是 react-native 用来显示视图的标记。


U
Uzama Zaid

React Js 正在使用 HTML Dom 进行操作。但是 React native 正在使用移动(iOS/android)本机 ui 组件进行操作。


B
B--rian

ReactJS 是一个用于构建 Web 界面的 javascript 库。你需要一个像 webpack 这样的打包工具,并尝试安装构建网站所需的模块。

React Native 是一个 JavaScript 框架,它提供了编写多平台应用程序(如 iOS 或 Android)所需的一切。您需要安装 xcode 和 android studio 来构建和部署您的应用程序。

与 ReactJS 不同,React-Native 不使用 HTML,而是使用类似的组件,您可以跨 ios 和 android 使用这些组件来构建您的应用程序。这些组件使用真正的原生组件来构建 ios 和 android 应用程序。因此,与其他混合开发平台不同,React-Native 应用程序感觉真实。组件还增加了代码的可重用性,因为您无需在 ios 和 android 上再次创建相同的用户界面。


R
Raj D

简单来说,ReactJS 是父库,它根据主机环境(浏览器、移动设备、服务器、桌面等)返回要渲染的内容。除了渲染它还提供了其他方法,如生命周期钩子......等。

在浏览器中,它使用另一个库 react-dom 来渲染 DOM 元素。在移动端,它使用 React-Native 组件来呈现特定于平台(IOS 和 Android)的原生 UI 组件。所以,

react + react-dom = web开发

react + react-native = 移动开发


C
Community

聚会有点晚了,但这里有一个更全面的例子,答案是:

反应

React 是一个基于组件的 UI 库,它使用“shadow DOM”来有效地更新 DOM,而不是为每次更改重建整个 DOM 树。它最初是为 Web 应用程序构建的,但现在也可用于移动和 3D/vr。

React 和 React Native 之间的组件不能互换,因为 React Native 映射到原生移动 UI 元素,但业务逻辑和非渲染相关代码可以重用。

反应DOM

最初包含在 React 库中,但在将 React 用于除 web 之外的其他平台时被拆分出来。它作为 DOM 的入口点,并与 React 结合使用。

例子:

import React from 'react';
import ReactDOM from 'react-dom';

class App extends Component {
    state = {
        data: [],
    }

    componentDidMount() {
        const data = API.getData(); // fetch some data
        this.setState({ data })
    }

    clearData = () => {
        this.setState({
            data: [],
        });
    }

    render() {
        return (
            <div>
                {this.state.data.map((data) => (
                    <p key={data.id}>{data.label}</p>
                ))}
                <button onClick={this.clearData}>
                    Clear list
                </button>
            </div>
        );
    }

}

ReactDOM.render(App, document.getElementById('app'));

反应原生

React Native 是一个跨平台的移动框架,它使用 React 并通过“桥梁”在 Javascript 和它的本地对应物之间进行通信。因此,在使用 React Native 时,许多 UI 结构必须有所不同。例如:在构建列表时,如果您尝试使用 map 而不是 React Native 的 FlatList 来构建列表,则会遇到主要的性能问题。 React Native 可用于构建 IOS/Android 移动应用程序,以及智能手表和电视。

世博会

Expo 是启动新的 React Native 应用程序时的首选。

Expo 是通用 React 应用程序的框架和平台。它是围绕 React Native 和原生平台构建的一组工具和服务,可帮助您在 iOS、Android 和 Web 应用程序上开发、构建、部署和快速迭代

注意:使用 Expo 时,您只能使用他们提供的 Native Api。您包含的所有其他库都必须是纯 javascript,否则您将需要退出 expo。

使用 React Native 的相同示例:

import React, { Component } from 'react';
import { Flatlist, View, Text, StyleSheet } from 'react-native';

export default class App extends Component {
    state = {
        data: [],
    }

    componentDidMount() {
        const data = API.getData(); // fetch some data
        this.setState({ data })
    }

    clearData = () => {
        this.setState({
            data: [],
        });
    }

    render() {
        return (
            <View style={styles.container}>
                <FlatList
                    data={this.state.data}
                    renderItem={({ item }) => <Text key={item.id}>{item.label}</Text>}
                />
                <Button title="Clear list" onPress={this.clearData}></Button>
            </View>
        );
    }

}

const styles = StyleSheet.create({
    container: {
        flex: 1,
    },
});

差异:

请注意,渲染之外的所有内容都可以保持不变,这就是为什么业务逻辑/生命周期逻辑代码可以跨 React 和 React Native 重用的原因

在 React Native 中,所有组件都需要从 react-native 或其他 UI 库中导入

使用映射到本机组件的某些 API 通常比尝试在 javascript 端处理所有内容具有更高的性能。前任。映射组件以构建列表与使用平面列表

细微的区别:像 onClick 变成了 onPress,React Native 使用样式表以更高效的方式定义样式,而 React Native 使用 flexbox 作为默认布局结构来保持响应。

由于 React Native 中没有传统的“DOM”,因此只能在 React 和 React Native 之间使用纯 JavaScript 库

反应360

值得一提的是,React 还可以用于开发 3D/VR 应用程序。组件结构与 React Native 非常相似。 https://facebook.github.io/react-360/


G
GOVINDARAJ

https://i.stack.imgur.com/j3TPA.png

反应JS

React 用于创建网站、Web 应用程序、SPA 等。

React 是一个用于创建 UI 层次结构的 Javascript 库。

它负责UI组件的渲染,它被认为是MVC框架的V部分。

React 的虚拟 DOM 比传统的全刷新模型更快,因为虚拟 DOM 只刷新页面的一部分,从而减少了页面刷新时间。

React 使用组件作为 UI 的基本单元,可以重复使用,从而节省编码时间。简单易学。反应原生

React Native 是一个用于创建跨平台 Native 应用程序的框架。这意味着您可以创建本机应用程序,并且相同的应用程序将在 Android 和 ios 上运行。

React Native 拥有 ReactJS 的所有优点

React native 允许开发人员以 web 风格的方式创建原生应用程序。


D
Daniel Agus Sidabutar

REACT 是用于构建大/小界面 Web 应用程序(如 Facebook)的 Javascript 库。

REACT NATIVE 是用于在 Android、IOS 和 Windows Phone 上开发原生移动应用程序的 Javascript 框架。

两者都是由 Facebook 开源的。


R
Robert Kaločai

这是一个非常好的解释:

Reactjs 是一个同时支持前端和服务器的 JavaScript 库。此外,它还可用于为移动应用程序和网站创建用户界面。

React Native 是一个跨平台的移动框架,它使用 Reactjs 来构建应用程序和网站。 React Native 编译为原生应用程序组件使程序员能够使用 JavaScript 构建可以在不同平台上运行的移动应用程序,例如 Windows、Android、iOS。

Reactjs 可以被描述为 React DOM 的基础衍生品,用于 Web 平台,而 React Native 本身就是一个基础衍生品,这意味着语法和工作流程保持不变,但组件发生了变化。

Reactjs 最终是一个 JavaScript 库,它使程序员能够创建一个引人入胜的高性能 UI 层,而 React Native 是一个用于构建跨平台应用程序的完整框架,无论是 Web、iOS 还是 Android。

在 Reactjs 中,虚拟 DOM 用于在 Reactjs 中渲染浏览器代码,而在 React Native 中,本机 API 用于在移动设备中渲染组件。

使用 Reactjs 开发的应用程序在 UI 中呈现 HTML,而 React Native 使用 JSX 来呈现 UI,这不过是 javascript。

CSS 用于在 Reactjs 中创建样式,而样式表用于在 React Native 中进行样式设置。

在 Reactjs 中,动画是可能的,使用 CSS,就像 Web 开发一样,而在 React Native 中,动画 API 用于在 React Native 应用程序的不同组件之间诱导动画。

如果需要为 Web 界面构建高性能、动态和响应式 UI,那么 Reactjs 是最佳选择,而如果需要为移动应用程序提供真正原生的感觉,那么 React Native 是最佳选择。

更多信息:https://www.simform.com/reactjs-vs-reactnative/


D
Dusty

以下是我所知道的差异:

它们有不同的 html 标签:React Native 用于处理文本,而不是在 React 中。 React Native 使用的是 Touchable 组件而不是常规的按钮元素。 React Native 有用于渲染列表的 ScrollView 和 FlatList 组件。 React Native 使用 AsyncStorage,而 React 使用本地存储。在 React Native 中,路由器充当堆栈,而在 React 中,我们使用 Route 组件进行映射导航。


A
Albert A

总结:React.js 用于 Web 开发,而 React-Native 用于移动应用程序开发


P
Pankaj Gadhiya

React Js - React JS 是前端 javascript 库,它是大型库而不是框架

它遵循基于组件的方法,有助于构建可重用的 UI 组件它用于开发复杂的交互式 Web 和移动 UI 尽管它仅在 2015 年开源,但它拥有支持它的最大社区之一。

它用于开发复杂的交互式 Web 和移动 UI

尽管它仅在 2015 年才开源,但它拥有支持它的最大社区之一。

ReactNative - React Native 是一个开源的移动应用程序框架。


N
Naveen Tiwari

一些区别如下: 1- React-Native 是一个用于创建移动应用程序的框架,其中 ReactJS 是一个可用于您的网站的 javascript 库。 2- React-Native 不使用 HTML 来呈现应用程序,而 React 使用。 3- React-Native 仅用于开发移动应用,而 React 用于网站和移动。


G
Guilherme de Jesus Santos

应该是一个简单的比较

反应式

return(
    <div>
      <p>Hello World</p>
    </div>
)

反应原生

return(
    <View>
      <Text>Hello World</Text>
    </View>
)

React Native 没有 divph1 等 Html 元素,而是具有对移动设备有意义的组件。
https://reactnative.dev/docs/components-and-apis 上的更多详细信息


S
Sid009

React Native 是一个 JavaScript 框架,它提供了编写多平台应用程序(如 iOS 或 Android)所需的一切。

ReactJS 是一个 JavaScript 库,用于构建 Web 界面和构建您的网站。