载链接:https://www.jianshu.com/p/11fe9401874c
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法。
我们在开始系列文章的技术点内容前,花一点时间探讨一下软件开发语言以及框架的学习本质,相对于整个技术点的讲解,花这一点一起思考的时间是值得的。
相信看此系列文章的朋友都已有了非常多的软件开发经验,而当我们回顾语言与框架的学习过程时,所有语言的基础语法都大同小异,无非基础数据类型、条件判断、分支判断、循环处理等等。而差别或者说最重要的是在框架的底层本质,也就是为什么会产生此框架、底层的优势是什么、为什么不用别的框架、框架的底层与设备之间是如何实现通信的等等。
截图
我们在开发的过程中,遇到的一些基础语法问题、框架使用问题,基本上只要灵活使用一下搜索引擎都能找到答案,有句话说:你要相信你遇到的技术难题在这个世界上肯定有其他人也遇到了。
而当我们需要抓住本质,对语言与框架有更加深入地了解、进行技术选型时、知道每一种技术的优劣、当框架的表现出现了一些诡异问题时会迅速定位问题、优化项目的性能,以及成为某一领域的专家时,最高效的学习方法就是直接去接触语言与框架的底层本质。
如 JavaScript 中的深拷贝与浅拷贝,如果只是进行数据类型的深拷贝与浅拷贝,即使你忘记了处理逻辑,你只要通过搜索引擎搜索就可以找到很多的实现方法,而如果你想一次掌握好此知识点,那么就需要你直接去学习数据结构以及数据类型对应的值类型与引用类型的区别,只有在掌握此部分的知识点后,在遇到数据类型的「诡异」表现时你才能抓住问题本质。
再如你在使用 React Native 框架提供的各种组件与 API,如访问移动设备的相册与摄像头、震动、GPS 定位、网络状态、消息推送以及整个 React Native 框架生态下提供的成千上万的第三方功能组件时,其实底层都是 React Native 框架与 iOS、Android 平台通信的实现。在原理章节掌握了原理后,后续的章节我们还会一起自己动手来实现一个与 iOS、Android 平台通信的自定义组件。
学习、精通语言与框架最好的方法就是直接掌握其最本质的部分。
React 框架最早孵化于 Facebook 内部,作为内部使用的框架,在 2011 年的时候 React 框架被用于 Facebook 的新闻流并于 2012 年使用在了 Instagram 项目上。在 2013 年五月美国的 JSConf 大会上,React 框架项目被宣布了开源。
在移动开发方面,Facebook 曾致力于使用 HTML 5 进行移动端的开发,最终发现与原生的 App 相比,体验上还是有非常大的差距,并且这种差距越来越大,特别是性能方面的差距。 最终,Facebook 放弃了 HTML 5 的技术方向,结合之前介绍的 React 框架的发展历史,2015 年 3 月,Facebook 正式发布了 React Native 框架,此框架专注于移动端 App 的开发。
React 作为构建高性能 Web 应用的框架,React Native 作为构建跨 iOS 与 Android 平台 App 应用的框架,极其繁杂的开发生态造成了很多朋友对 React / React Native 框架产生了些许误解,认为框架太过庞杂混乱,造成了学习成本与开发成本的增加。
此系列文章将带领大家深入探究 React 与 React Native 框架的本质,只有在掌握了框架本质后,才能快速地领略到这两个孪生框架的核心,不仅可以在这两个框架间灵活切换学习,还可以不被繁杂的框架生态所蒙蔽,最终达到以不变应万变的境界。
从上面的 React 与 React Native 简介即可看到,两个框架算是孪生项目,而 React Native 的底层也就是 React 框架。
截图
React 框架使用 JSX(JavaScript eXtension,可以理解为看起来像 HTML 的 JavaScript)指定 React 组件的输出定义,而逻辑函数的部分依然是采用 JavaScript ES6 来编写,所以对于前端开发人员来说上手非常地容易。
编写的代码通过 React 框架渲染在 Web 浏览器中运行,所以 React 可以用来开发 Web 项目,当然借助第三方的组件还可以开发桌面项目,这些我们在后续会进行相关介绍。
React Native 依然由 JSX 进行组件布局的开发,框架中组件开发的原理与思想与 React 框架一致,而且底层都由最重要的 state 进行驱动。
React 与 React Native 除了在编码表现层都使用 JSX 语法外,在 React 与 React Native 的底层都有 Virtual DOM 与 DOM 之间的映射与转换,以实现了页面组件高效更新的前端表现。
截图
用户看到的表现层(Browser DOM)的更新,底层都是由 state 驱动了 Virtual DOM 进行变动前与变动后的比较,最终将需要重新渲染的 DOM 进行渲染展示。
而这种通过只修改 state (Model) 值引起 HTML (DOM) 变化的框架设计模式就是我们熟悉的 MVVM (Model-View-ViewModel) 模式。
以前我们可以通过直接操作 HTML 元素的形式进行页面的更新,如下面的这段 jQuery 代码。
$('#container').text('Updated Content...')
当这样的代码在页面更新非常复杂的项目中使用时,你会疲于通过操作 DOM 元素更新,映射后台大量的数据更新。
截图
而 MVVM 模式,如目前的前端框架 Vue、Angular 和我们介绍的 React 都是基于此设计模式,将页面呈现 View 与后台的数据模型 Model 进行了分离解耦,使得我们只需要专注于 Model 的处理,通过修改 Model 中的属性值,引起前端 View 的变化,不过 React 默认的数据绑定方式是单向绑定,这一部分的差异我们后续章节会展开讨论。
对于 MVVM 模式的体验以及如何通过修改 Model 引起 View 的更新,大家可以查看下一小节,我会给大家具体的代码演示。
而目前的移动端开发方面,「原生开发」是指 iOS 平台通过 Objective-C 或 Swift 语言开发并通过 Xcode 编译打包发布 iOS App,Android 平台通过 Java 语言开发并通过 Android Studio 编译打包发布 Android App。
通过下图我们可以看到「原生开发」的学习成本以及后期 App 维护的成本,而 React Native 则是通过 JavaScript 开发,然后通过框架提供的与对应平台之间的 bridge 进行通信,实现了只用一套代码可以直接部署到 iOS 与 Android 平台并编译出对应平台的 App。
截图
并且 React Native App 页面布局直接通过 HTML 和 CSS 的前端基础技术进行布局与开发,大大降低了学习成本。
你如果早就在心里有开发一个自己 App 的想法,而刚好你有前端开发的技能,React Native 一定会是你孵化自己 App 最好的选择。
本系列文章会从 React 的基本使用方法开始,并会讲解到 React 的底层原理,并从一些实际案例中探讨出 React 底层对于前台表现的原因。底层原理会结合独立的算法以及 React 框架的源码进行详细解释。
之后会讲解演示 React Native 的基本使用,同时会解释 React Native 框架与 React 框架的关系、React Native 的性能问题、以及 React Native 与 iOS、Android 平台通信的原理,抛却 React Native 纷杂的各种类库,直达 React Native 的底层原理,掌握了原理后才能看懂所有表象的类库实现原理。并会动手自己实现 iOS 平台与 Android 平台的自定义组件,深入掌握各种第三方组件的实现原理。
「React.js 入门与实战」视频教程
《React Native 精解与实战》书籍
更多免费原创视频教程
需要相关资料,关注我,私信我回复:React和React Native 学习资料
这一小节给大家描绘了整体安排以及学习的本质,接下来我们会先从 React 底层原理开始,掌握好这两个框架最本质的部分。
任何知识的学习过程都不会是「舒服」的过程,只有跳离自己的舒适区,才能有进步,所以遇到任何疑问或想交流的问题,大家只需在文章下留言即可,我都会与大家交流。
着移动应用的需求越来越大,许多企业开始将焦点转移到移动应用的开发上。通过引入新技术、新平台和新框架,移动应用开发者能够创建划时代的移动应用。
近年来,跨平台应用开发非常流行,通过跨平台的应用开发者编写一份代码就能同时为 Android、iOS、Windows 等多个平台同时开发应用程序。
在众多的开发利器中,React Native 是著名的跨平台移动应用开发工具之一,它是由 Facebook 开发的,且是目前的最为活跃的开发者社区之一。
不过 Google 在 2017 年的 Google I/O 开发者大会上发布了他们自己的软件开发工具(SDK):Flutter。今天,我们就来比较一下这两个框架。
Flutter 的设计目标是在 iOS 和 Android 系统上创建高质量界面,它是 Google 的移动开发框架。同时,它也是免费的开源工具,能和现有代码共同使用,甚至在最近越来越受欢迎。
Flutter 的优势在于:
Flutter 拥有热加载功能,只需几毫秒就能运行应用程序。它的自定义窗体功能也可以用来创建原生界面。
快速交付的功能着重于原生的最终用户体验。多层的架构可以实现完全的定制化,从而得以实现灵活的设计和快速的渲染。
窗体覆盖了所有基本的平台之间的差异,同时拥有滚动、导航、图标和字体等功能,同时为 iOS 和 Android 提供了完整的原生性能。
React
React 是个 JavaScript 库,其具有高效、灵活的特性,而且使用声明式来编写用户界面。开发者可以通过小型、独立的代码片段(所谓的“组件”)来构成复杂的 UI。
React 的功能
React Native 由 Facebook 于 2013 年开发。最常见的问题的解决方案都列在了 React Native 的开发文档和指南中。社区论坛中还有许多开发者,对用户每天遇到的问题做出了关键的贡献,并辅助用户解决这些问题。
通过阅读贡献者手册,查阅 Roadmap,分析其他人的工作,你也可以为社区做出贡献。你也可以寻找在社区中被询问次数最多的、最流行的功能。
Flutter 文档足够让你开始进行应用程序开发了。
Flutter Gallery 在其网站上演时了所有 Flutter 组件,你也可以参照 Flutter 的 GitHub 中的实现。
Flutter 的网络不像 React Native 那么强大。但是,Google 的 Flutter 团队提供的帮助非常好。
他们提供了许多方法让你提交问题。
React Native 是个 JavaScript 库,而 Flutter 是个 SDK,使用的是完全不同的编程语言 Dart。
JavaScript 最初的创建目的只是 Web 开发,但现在已经有了大量的其他函数库,已经变得非常庞大,很少有地方没有它的身影。
React Native 将动态的 JavaScript 代码在运行时编译成原生视图。其余的代码运行在应用程序内部封装的虚拟机内。
Dart 是个通用语言,由 Google 开发。它可以用来构建网站、服务器、移动应用,也能用于物联网设备。
Dart 受到了许多语言的影响。最强的影响来自 Java。Java 程序员可以很容易注意到两者之间的相似性。
Dart 是个面向对象的编程语言,支持抽象、封装、继承、多态等。
Dart 程序可以在以下两种模式下运行:
这种模式会启用动态类型和断言。如果代码中提供了静态类型,就可以打开类型断言。在开发和测试阶段建议使用检查模式,有助于捕捉代码中类型不匹配的错误。
这是所有 Dart 程序的默认模式。它能让程序运行得更快。
尽管 Dart 提供了很多社区支持,但它仍然比不过 JavaScript 等其他主流语言,因此连知道 Dart 的人都很少。
Flutter 的框架使用函数式反应式编程,它受到了 React 的启发。
虽然 Flutter 是用 Dart 写的,但它借鉴了 React 最好的功能,帮助开发者建立漂亮、跨平台的移动应用。
使用 React Native 的体验很像使用不带 CSS 框架的 HTML。
与 Flutter 应用不同,使用 React Native 时,必须使用一些第三方库,因为 React Native 本身不提供UI组件
我们需要使用如 React Native、React Native Material Design、Shoutem 和其他 UI 库。
Flutter 有自己的 UI 组件,其引擎能将组件渲染到 Android 和 iOS 平台上。大多数组件都符合 Material Design 的标准。
Flutter 内置的组件可以用来开发应用程序的界面。这些组件叫做窗体(widget)。这里我们只需选择正确的窗体并传递正确的属性,就能获得需要的界面。
Flutter 中的每个窗体都由自己的属性,可以嵌套在其他组件中。窗体也能调用父组件的属性。
在 React Native 中,使用原生模块和用户界面组件只需桥接就可以。但在 Flutter 中无法这样做,因为 Flutter 有自己的渲染引擎。
这里是 Flutter 窗体(https://flutter.io/widgets/)的一些例子。
React Native 中的样式用 JavaScript 定义。所有 React Native 的核心组件都支持一个名为 style 的属性。
样式名称和值和 Web 上的 CSS 很相似。
唯一的区别就是,在 React Native 中的样式名称是用大小写混合的。所以要定义背景色,需要使用 backgroundColor,而不是 background-color。
Flutter 中的样式用法跟 React Native 不太一样。下面这段 React Native 代码定义了字体样式和其他文本属性,都由 CSS 处理。
var container = new Container( // grey box child: new Text( "Lorem ipsum", style: new TextStyle( fontSize: 24.0 fontWeight: FontWeight.w900, fontFamily: "Georgia", ), ), width: 320.0, height: 240.0, color: Colors.grey[300], );
如果用 Flutter 实现同一段代码,将会是这样:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; export default class LotsOfStyles extends Component { render() { return ( <View style={styles.greybox}> <Text>Lorem Ipsum</Text> </View> ); } } const styles = StyleSheet.create({ greybox: { backgroundColor: #e0e0e0, width: 320px; height: 240px; font: 900 24px Georgia; } }) // skip this line if using Create React Native App AppRegistry.registerComponent('AwesomeProject', () => LotsOfStyles);
我们来更仔细低看看它的优缺点。
使用 Flutter 的五个优点
Flutter 意味着更快、更动态的移动应用开发。代码中的改变可以立即在应用程序中看到,这就是所谓的热加载,只需花几毫秒,能帮助开发者更快地添加功能、修复 Bug 和试验各种新东西。
热加载也十分适合开发者和设计师之间的合作,可以试验各种应用程序的外观并立即看到效果。
换句话说,Flutter 可以让设计师和测试者一起与开发者在 UI 上工作。
绝大多数代码变更都可以热加载。但有一些变更需要重新启动应用,这些是热加载的限制。
相比之下,在原生应用程序开发时,整个项目需要重新构建,这需要花很长时间,有时甚至会花上几分钟。
开发者只需写一次代码,就能在 Android 和 iOS 两个平台上运行。
Flutter 并不依赖于平台,因为它有自己的窗体和设计,所以你可以在两个平台上拥有同样的应用。当然,需要时你也可以做出不同的应用。
两个平台同样的应用意味着需要的测试更少。QA 过程可以更快,因为只需要测试一份代码。开发者只需要编写一份测试代码。
QA 专员的工作也会变少,因为他们只需要测试一个应用。如果不同平台上的应用有差异,那么这些差异需要在各自的平台上测试。
Flutter 的设计方式使得开发者很容易创建自己的窗体,或定制已有的窗体。你可以浏览许多 Flutter 窗体的例子(https://flutter.io/widgets/)、Material Design 的例子(https://flutter.io/widgets/material/)和 Cuptertino 窗体的例子(https://flutter.io/widgets/cupertino/)。
即使在旧版本的 Android 和 iOS 平台上,应用的外观也是一样的。适配旧设备不需要额外的工作。Flutter 能在 Android Jelly Bean 之后的版本和 iOS 8 之后的版本上运行。
缺点
在 2018 年 4 月,Flutter 发布了 beta 2 版。Flutter 团队还没有发布稳定版本。
“我们仍然在尝试将 API 稳定下来,同时根据用户的反馈对系统的各个部分进行改进。一些关键功能还无法用于大范围的应用。”Flutter 官网如是说。
这就是说,以后还会有更多的改变和改进。
很不错,但用于原生开发还略显不足。
Flutter 很优秀,有许多函数库提供了很多功能。
但是,Flutter 依然很年轻,因此不一定能在函数库中找到所有需要的功能。也就是说,开发者需要自行创建这些功能,有可能会花很多时间。
因为 Flutter 依然是 Beta 状态,它还没有受到 Travis、Jenkins 等 CI 平台的广泛支持。
为了实现自动构建、自动测试和自动部署,开发团队必须开发并维护自己的脚本。
React Native 也只需要一份代码(JavaScript)。它的视图组件在 iOS 和 Android 中的行为不一样。
尽管 React Native 有大量的社区支持,为我们提供了许多优秀的插件和库,但这也意味着这些库可能会和已有项目冲突。
如果你习惯了 JSX 环境,Fluttter 的 UI 代码看上去有点无聊,而且在 UI 变得复杂之后代码的可读性也会变差。
与 React Native 相比,Flutter 的资源似乎并不多。主要原因就是 Flutter 的基础还没有 React Native 那么稳定。但作为 Beta 版,Flutter 的资源已经有了巨大的成长。
React Native 和 Flutter 都有自己的优缺点。React Native 有更多的社区支持,Flutter 依然很年轻,而 React Native 已经铺好了路。
Flutter 看上去很吸引人,但还需要一些改进,还需要一些时间才能展示出潜力。
原文:https://medium.com/@surendervikram/flutter-vs-react-native-best-cross-platform-app-development-tool-16163e22618b
作者:Surender Vikram Singh,技术专家、企业家,有15年的全球开发经验。
译者:弯月,责编:屠敏
前我们已经介绍了2019 年 Vue 学习路线图,而 React 作为当前应用最广泛的前端框架,在 Facebook 的支持下,近年来实现了飞越式的发展,所以,我们将在下文中介绍 2019 年 React 学习路线图,希望给想学 React 的开发者一些借鉴。
这就是 2018 年的 React 路线图。它非常全面,2018 年剩下的时间可能不够你学会所有这些,但不要担心,所有的技术在 2019 年仍然有效。
图片来源:https://github.com/adam-golab/react-developer-roadmap/blob/master/roadmap.png
不管你要学习哪个 Web 开发框架或库,都必须掌握基础知识,如 HTML、CSS 和 JavaScript,这三个是 Web 开发的三大支柱。
HTML
HTML 是 Web 开发人员最重要的技能之一,因为它为网页提供了基本结构。
CSS
CSS 用于设置网页样式,让网页看起来更好看。
JavaScript
JavaScript 让网页具备交互性。React 是基于 JavaScript 的,因此在学习 React 之前,你应该先了解 JavaScript。
无论你是前端开发人员还是后端开发人员,甚至是全栈工程师,都必须了解一些能够让你在编程世界中生存下来的通用开发技能。
学习 GIT
你必须在 2018 年完全了解 Git。尝试在 GitHub 上创建一些存储库,与其他人共享你的代码,并学习如何在你喜欢的 IDE 中克隆 Github 上的代码。
了解 HTTP(S) 协议
如果你想成为一名 Web 开发人员,那么了解 HTTP 绝对是有必要的。
我不是要你去阅读 HTTP(S) 规范,但你至少应该熟悉常见的 HTTP 请求方法,如 GET、POST、PUT、PATCH、DELETE、OPTIONS 以及 HTTP/HTTPS 的工作原理。
学习终端
虽然前端开发人员学习 Linux 或终端并不是强制性的,但我强烈建议你熟悉以下终端,了解如何配置你的 shell(bash、zsh、csh)等。
算法和数据结构
好吧,这又是一个通用编程技能,成为 React 开发者不一定需要了解这些,但要成为真正的程序员,这是必备技能。
学习设计模式
就像算法和数据结构一样,成为 React 开发者并不一定要学习设计模式,但学好设计模式会让你变得更好。了解设计模式将帮你找到能够经受住时间考验的解决方案。
你必须学好 React 才能成为一名 React 开发者。学习 React 最好的资源是它的官方网站,但作为初学者,它对你来说可能有点难。
3.1 学习构建工具
如果你想成为一名专业的 React 开发者,那么你应该花一些时间熟悉一下你将作为 Web 开发者需要使用的工具,比如构建工具、单元测试工具、调试工具等。
以下是路线图中列出的构建工具:
包管理器:
顺便说一句,并非要学习所有这些工具,对于初学者来说,学习 npm 和 Webpack 应该足够了。在你对 Web 开发和 React 生态系统有了更多的了解后,你就可以学习其他工具。
3.2 样式
如果你的目标是成为 React 开发者,了解一些样式相关的知识只会有益无害。路线图中提到了很多 CSS 相关的东西,比如 CSS 预处理器、CSS 框架、CSS 架构和 JS 中的 CSS。
我建议你至少学习一下 Bootstrap,这是你经常会用到的 CSS 框架。
如果你想进一步学习 bootstrap,也可以学习 Materialise 或 Material UI。
3.3 状态管理
这是 React 开发者应该关注的另一个重要领域。路线图中提到了以下一些需要掌握的概念和框架:
如果东西太多,我建议你只关注 Redux。
3.4 Type Checker
由于 JavaScript 不是一种强类型语言,因此编译器不会捕获那些与类型相关的错误。
随着应用程序的增长,你可以通过类型检查捕获大量错误,尤其是如果你可以使用 Flow 或 TypeScript 等 JavaScript 扩展对整个应用程序进行类型检查。
React 也提供了一些内置的类型检查功能,可以用它们帮你尽早发现 bug。
由于 Angular 也使用了 TypeScript,我认为可以同时学习 JavaScript 和 TypeScript。
3.5 Form Helper
除了 Type Checker 之外,还可以学习像 Redux Form 这样的 Form Helper,它提供了在 Redux 中管理表单状态的最佳方法。除了 Redux Form 之外,还有 Formik、Formsy 和 Final。
3.6 路由
组件是 React 声明性编程模型的核心,而路由组件是应用程序的重要组成部分。
React Router 提供了一组导航组件,这些组件可以通过声明的方式与你的应用程序组合在一起。
除了 React Router 之外,你还可以看看 Router 5 和 Redux-First Router。
3.7 API 客户端
在今天的世界中,你很少会构建独立的 GUI,相反,你将有更多机会使用 REST 和 GraphQL 等 API 构建与其他应用程序发生交互的东西。
值得庆幸的是,React 开发者可以使用很多 API 客户端:
REST
GraphQL
Apollo 客户端是我的最爱,它提供了一种使用 GraphQL 构建客户端应用程序的简便方法。Apollo 可以帮你快速构建使用 GraphQL 获取数据的 UI,并可以与任意 JavaScript 前端一起使用。
3.8 辅助库
这些库可以让你的工作变得更轻松。React 开发人员可以使用很多辅助库,如下所示:
这些不一定都要学,路线图中的 Lodash、Moment 和 Classnames 是用黄色标注的,所以应该先从它们开始学习。
3.9 测试
测试是 React 开发者的一项重要技能,但经常被忽视,如果你想在竞争中保持领先,就要学习一些用于测试的库。这些库可用于单元测试、集成测试和端到端测试。
以下是路线图中提到的库:
单元测试
端到端测试
集成测试
你可以学习你想学习的库,但建议一定要学习 Jest 和 Enzyme。
3.10 国际化
这是前端开发的另一个重要主题。你可能需要支持日本、中国、西班牙和其他欧洲国家的本地 GUI 版本。
路线图中建议你学习以下技术,它们都很好理解:
这两个库都提供了 React 组件和 API 来格式化日期、数字和字符串,包括复数和处理翻译。
3.11 服务器端渲染
你可能会想,服务器端渲染和客户端渲染之间有什么区别。在使用客户端渲染时,你的浏览器会下载一个最小的 HTML 页面,然后通过 JavaScript 并将内容填充到页面中。
在使用服务器端渲染时,React 组件是在服务器上进行渲染的,将输出的 HTML 内容传到客户端或浏览器。
路线图推荐了以下的服务器端渲染:
不过我建议学习 Next.js 应该足够了,Max 的“ React 16 — The Complete Guide”也涵盖了 Next.js 的基础知识。
3.12 静态站点生成器
Gatsby.js 是一个现代静态站点生成器。你可以使用 Gatsby 创建个性化的登录网站体验。它将你的数据与 JavaScript 相结合,并创建格式良好的 HTML 内容。
3.13 后端框架集成
React on Rails 将 Rails 与 Facebook 的 React 前端框架(服务器渲染)集成在一起。它提供了服务器渲染,通常用于 SEO 爬虫索引和 UX。
React Native 正迅速成为使用 JavaScript 开发具有原生外观的移动应用程序的标准方法。
路线图中建议你学习以下库:
但我认为只要学习 React Native 就足够了。
还有一些基于 React 的框架可用于构建像 React Native Windows 这样的桌面 GUI,让你可以使用 React 构建原生 UWP 和 WPF 应用程序。
路线图建议使用以下几个库:
它们都是进阶的内容,如果你已经掌握了 React,可以看一下它们。
如果你对构建基于虚拟现实的应用程序感兴趣,还可以了解以下像 React 360 这样的框架,让你可以通过 React 开发 VR 体验。如果你对这个领域感兴趣,可以进一步了解 React 360。
*请认真填写需求信息,我们会在24小时内与您取得联系。