我需要了解关于来自 React JS 的 React Native 的哪些信息?

2025-06-08

我需要了解关于来自 React JS 的 React Native 的哪些信息?

这篇文章适合那些对 React Native 感兴趣,并且有 React JS 使用经验的人。他们知道能够进行移动和 Web 开发有助于提升自己的工作前景,但同时也想知道使用起来有多简单,以免在阅读文档(其实文档本身就很棒,你应该看看)之前浪费太多时间。


入门

React Native 的设置非常简单,所以绝对不要因此而却步。只需不到五分钟,你就能构建一个可以在手机上显示的应用。

开始使用 Expo CLI 与 React Native CLI

我们将使用 Expo CLI 快速上手(两者的区别请见此处,Expo 的使用限制请见此处)。只要您使用的是 Node 12+ 版本,就可以使用 npm 安装并创建新项目。

npm install -g expo-cli

expo init MyFirstProject
cd MyFirstProject
npm start
Enter fullscreen mode Exit fullscreen mode

最基本的设置就是这样。现在你已经准备好开始开发你的应用了(阅读完本文的其余部分,了解 React JS 和 React Native 之间的基本区别后)。


显示选项

运行npm start(或expo start)的方式与 React JS 一样,只是打开的浏览器窗口会为您提供一些有关如何呈现项目的选项。

您会看到这些菜单选项
React Native 菜单选项

以及二维码
Netflix 上的《降世神通:最后的气宗》链接

  • 最快但最无趣的选项:在 Web 浏览器中运行。
    这与 React JS 完全相同。新标签页会打开,并显示来自 App.js 的欢迎消息,或者你选择渲染的任何内容。保存后会自动更新浏览器中的代码。

  • 仍然相当快捷,而且绝对非常有趣的选项:二维码。
    如果你在移动设备上下载了 Expo Go 应用,就可以使用应用中的二维码扫描功能(前提是两台设备处于同一网络)在手机上展示你的项目。扫描后,应用会记住该项目,方便你以后再次查看。说实话,这是我最喜欢的选项。

  • 设置速度较慢,但​​可能是最实用的选择:iOS/Android 模拟器。
    在自己的手机上使用模拟器确实很酷,但对于长期开发来说,低头看着手机不如在屏幕上直接在代码旁边放一个模拟器/仿真器更高效。不过,要实现这一点,你需要 Xcode 和 Android Studio,而首次安装和配置它们可能需要相当长的时间。

选择适合您目标的选项,让我们进入重点:这仅仅是带有一些新变化的 React JS,还是我必须学习全新的语法?


React Native 有何不同?

这绝不是一个完整的列表,但以下是与 React JS 的四个重大差异,我们需要解决这些差异才能快速熟悉 React Native。一旦你开始从基础开始学习,如果你需要什么,这里可能有一个合适的组件

没有 HTML 语法

这是 React JS 中一个基本的 Welcome 组件的样子

function Welcome(){
  return(
    <div>
      <h1>Welcome to my React App!</h1>
      <h3>Log in below</h4>
      <UserLoginForm />
    </div>
  )
}
Enter fullscreen mode Exit fullscreen mode

现在,我知道这里所有看起来像 HTML 的东西实际上都是 JSX,但关键在于,这些 JSX 正在努力匹配 HTML 的语法。React Native 仍然使用 JSX,但不允许使用任何类似 HTML 的组件。

鉴于我们不再面向 Web 开发,这很合理,但仍需要一些调整。要在 React Native 中重新创建上述功能,我们必须使用它的一些核心组件

注意: 以下所有组件都需要通过名称导入才能使用。别忘了导入!

Div 变成 View / ScrollView

React Native 中标签的简单对应物<div><View>组件。它们的行为几乎完全相同(在嵌套、样式等方面),并且对于我们的例子来说,切换起来<div>非常快捷且轻松。

import {View} from 'react-native'

function Welcome(){
  return(
    <View>
      <h1>Welcome to my React App!</h1>
      <h3>Log in below</h4>
      <UserLoginForm />
    </View>
  )
}
Enter fullscreen mode Exit fullscreen mode

这里的一个区别是视图不可滚动,所以如果我们希望这个 Welcome 组件的全部或部分可滚动,我们就必须将组件的该部分包装在里面,<ScrollView>或者完全替换<View>

注意: ScrollView 必须有高度限制才能正常工作。更多信息请见此处

文本组件

我们已经修复了<div>错误,现在该如何处理这些<h1><h3>标签呢?答案是<Text>:React Native 中几乎所有文本的简单解决方案。最接近的直接比较对象<Text><p>标签。

import {View, Text} from 'react-native'

function Welcome(){
  return(
    <View>
      <Text>Welcome to my React App!</Text>
      <Text>Log in below</Text>
      <UserLoginForm />
    </View>
  )
}
Enter fullscreen mode Exit fullscreen mode

不再出错!至少,假设我UserLoginForm在其他地方编写了一个组件并正确导入/导出,就不会出现错误。但你可能注意到了一个小问题。在我们最初的 Welcome 中,我们有两种不同的标题大小,但现在我们只有两个相同的文本组件。这是因为 React Native 中没有单独的标题文本组件。我们必须额外添加一个小步骤,自己设置样式。

样式表组件

正如 React Native 中没有 HTML 一样,它也没有 CSS。不过不用担心,StyleSheet 组件与 React Native 非常相似,你几乎感觉不到它们的区别。内联样式仍然是一种选择:

import {View, Text} from 'react-native'

function Welcome(){
  return(
    <View>
      <Text style={{fontSize: 40}}>Welcome to my React App!</Text>
      <Text style={{fontSize: 20}}>Log in below</Text>
      <UserLoginForm />
    </View>
  )
}
Enter fullscreen mode Exit fullscreen mode

但是,您看到的最常见的样式是通过在常量下创建一个对象,styles并使用适当元素的键。

import {View, Text, StyleSheet} from 'react-native' // NEW IMPORT

const styles = StyleSheet.create({
  title: {
    fontSize: 40
  },
  subTitle: {
    fontSize: 20
  }
})

function Welcome(){
  return(
    <View>
      <Text style={styles.title}>Welcome to my React App!</Text>
      <Text style={styles.subTitle}>Log in below</Text>
      <UserLoginForm />
    </View>
  )
}
Enter fullscreen mode Exit fullscreen mode

好了,我们修复了所有错误,并在 React JS 中匹配了我们一开始的代码(尽管字体大小数字可能与 an<h1>和 an不完全匹配<h3>)。文档对样式的解释很详细,所以我就不在这里深入讨论了。

注意: React Native 中一个容易被忽视的区别是样式表数字上没有单位(例如“px”)。


React Native 中有什么相同之处?

简而言之:很多!显然,构建原生应用会面临各种挑战,需要解决,尤其是在项目变得越来越复杂的情况下。但好消息是,基本原理是一样的。

我不会逐一列出每个相同的事物(无论如何,差异往往要显著得多),但我认为 React JS 开发人员会欣慰地发现,他们已经知道如何在 React Native 中做到这一点,甚至无需尝试。

构建组件肯定是最重要的,因为组件是 React 的核心,在 React Native 中对组件的结构和使用方式进行重大改动会非常麻烦。虽然没人期待这里会有太大的变化(它们显然是由同一批人开发的,而且可以协同工作),但正是这种变化让学习的决定变得不那么令人畏惧。

  • 我还能构建类组件吗?是的。
  • 函数式组件?是的。
  • 本地状态和 props?完全一样。
  • 钩子?当然了。
  • 事件处理?语法略有不同,但工作原理相同。
  • 获取请求?一样。
  • 如果我想使用 Async/Await 怎么办?随意!

你明白了。你已经对 React Native 的了解比你想象的要多得多!


如果你还没有具体的项目想法,可以参考很多很棒的教程。所以,如果你有 React JS 背景,并且正在考虑 React Native,那就没有理由不尝试一下了。它的设置非常简单,即使只是随便玩玩也很有趣。

链接:https://dev.to/coleflournoy/what-do-i-need-to-know-about-react-native-coming-from-react-js-2kp0
PREV
新开发人员,你的简历太烂了
NEXT
停止移除焦点