React.js

Hire the Top 3% of Freelance React.js Developers

Toptal是一个专注于React的市场.Js开发人员、工程师、程序员、编码员、架构师和顾问. 顶级公司和初创公司选择Toptal React.. js自由职业者的关键任务React.Js开发项目.

无风险试用,满意才付款.

Hire Freelance React.js开发人员和工程师

Sergii Petryk

Freelance React.js Developer

CanadaToptal Member Since October 9, 2019

Sergii是一名高级全栈开发人员,在不同行业的软件开发方面拥有超过10年的经验, 最近的五年主要集中在React和TypeScript上. 作为一名真正了解客户基础设施和痛点的熟练开发人员,他在行业领先的公司中备受尊敬. Sergii还具有设计和构建解决方案所需的动手技术才能.

Show More

Matt Reynolds

Freelance React.js Developer

United KingdomToptal Member Since November 16, 2022

Matt是一位经验丰富的全栈软件工程师,拥有近10年的web开发经验, 最近是一家成功的电子商务创业公司. He specializes in Next.js、React和React Native web、移动和电视应用. Matt还曾与大型全球媒体公司合作,为SaaS应用程序开发api和数据库集成.

Show More

Mauricio Ize

Freelance React.js Developer

United StatesToptal Member Since June 29, 2021

Mauricio是一名全栈开发人员,在团队构建软件解决方案方面有着出色的工作经验. 他最喜欢的堆栈——开发从web、移动到服务器端的各种应用程序——包括React, React Native, and Node.js. 他在软件计算机行业有十年的工作经验,并在UFRGS和威斯康星大学接受过计算机科学方面的教育, 可以肯定地说Mauricio可以满足您的全栈开发需求.

Show More

Mikhail Koviazin

Freelance React.js Developer

ChinaToptal Member Since September 22, 2021

Mikhail是网络抓取和网络自动化领域的自我管理专业人士. 他在前端(React)和后端(Node)方面都非常熟练.js) tech stacks. Mikhail更喜欢与客户密切合作,了解他们的需求和期望,并建议和讨论最合适的解决方案,以提供最佳体验.

Show More

Sebastian Kalinowski

Freelance React.js Developer

PolandToptal Member Since October 11, 2019

Sebastian is a .专门从事后端层开发的。NET开发人员. 他在银行业有超过十年的专业经验, financial, 招聘行业. 他还熟悉前端开发(React)、系统设计和架构. Sebastian已经成功地与许多客户一起定义了需求, 设计新的系统元素, 实现新功能, 优化现有系统.

Show More

Kamil Jakubczak

Freelance React.js Developer

PolandToptal Member Since September 18, 2017

Kamil是一位拥有全栈经验的工程师,也是一位真正热爱TypeScript的React和React Native爱好者. 卡米尔有在大公司工作的经验, small startups, 作为一个独立的开发者规划架构, setting up the CI/CD, coding applications, 并将它们部署到服务器或应用商店.

Show More

莱昂纳多·安德烈斯·加西亚·克雷斯波

Freelance React.js Developer

United KingdomToptal Member Since February 10, 2014

莱昂纳多是一个终生的技术爱好者,他总是试图学习新的东西,同时跟上他最喜欢的技术. 他的性格非常积极主动,他总是在创造一些东西. 他目前正在大量使用React和GraphQL等技术.

Show More

Michael Pontus

Freelance React.js Developer

RussiaToptal Member Since December 5, 2018

Michael是一名全栈web开发人员,也是前端技术(尤其是React)的专家. 他是一名经过认证的AWS解决方案架构师,在云开发和发布工程方面具有行业经验. Michael以SME的身份出版了教程, 对开源做出了贡献, 为航空业的机队管理开发了一个应用程序. 他对模块化架构充满热情,喜欢在代码和基础架构之间进行混合工作,将设计带入生活.

Show More

Ivan Novikov

Freelance React.js Developer

United StatesToptal Member Since May 6, 2021

Ivan是一名企业家和全栈开发人员,专门从事前端. 他有十年的经验,其中五年是React、TypeScript和RxJS. Ivan使用React钩子来构建复杂的组件,比如虚拟列表, combined strict types, 函数式代码和Jest单元测试构建一个大型的(50,000行)前端代码库, 提供了一个支持离线编辑的PWA, 并撰写OSS和文章.

Show More

Matej Bilić

Freelance React.js Developer

CroatiaToptal Member Since November 4, 2021

Matej是一位才华横溢的全栈web开发人员和移动应用程序开发人员,擅长高级web和应用程序开发阶段. 他精通各种技术, including React, React Native, Firebase, Express, Django, and many others. Matej可以在独立项目中有效地进行自我管理, 以及在团队中合作.

Show More

现在注册以查看更多资料.

Start Hiring
经常成对

获得额外的专业知识

我们的客户经常将这些额外的服务与我们的自由职业者React配对.js Developers.

A Hiring Guide

雇佣优秀员工指南.js Developer

React是一个由Facebook开发的JavaScript库,它彻底改变了我们对应用程序的看法. 借用陈述性的观点, reactive, 函数式编程, 它使开发高度交互的用户界面变得轻而易举. 因此,它是每个前端开发人员都应该拥有的工具. 为你的所有React需求找到合适的工程师可能是一个挑战. 这篇招聘指南提供了一个招聘过程,其中包含了一系列有见地的问题,可以帮助你找到在各自领域都是专家的全职和兼职React开发人员.

Read Hiring Guide

React.js Hiring Resources

更多的资源来雇用React.js Developers

工作描述模板Interview QuestionsTips and PracticesJobs
Trustpilot
THE TOPTAL ADVANTAGE

在无风险试用后,98%的Toptal客户选择雇用我们的人才.

道达尔的筛选和匹配过程确保卓越的人才与您的精确需求相匹配.

Start Hiring
Toptal in the press

... 允许公司快速组建具有特定项目所需技能的团队.

尽管对程序员的需求在不断增加,但Toptal对自己近乎常春藤联盟级别的审查感到自豪.

Our clients
为游戏制作应用程序
Conor Kenney
为游戏制作应用程序
构建一个跨平台的应用程序,在全球范围内使用
Thierry Jakicevic
构建一个跨平台的应用程序,在全球范围内使用
引领数字化转型
Elmar Platzer
引领数字化转型
挖掘实时数据将改变行业的游戏规则
挖掘实时数据将改变行业的游戏规则
What our clients think
Clients Rate Toptal React.js Developers4.4 / 5.0截至2023年11月17日,平均有3029条评论
Testimonials

没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. 我们将继续使用Toptal. 作为一家初创公司,它们是我们的秘密武器.

Brantley Pace, CEO & Co-Founder

Tripcents

我对我们与Toptal的合作经验非常满意. 和我一起工作的专业人员在几个小时内就和我通了电话. 在和他讨论了我的项目后,我知道他就是我想要的候选人. 我立即雇用了他,他没有浪费时间就完成了我的项目, 甚至通过添加一些很棒的设计元素来增加我们的整体外观.

Paul Fenley, Director

K Dunn & Associates

与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.

Ryan Rockefeller, CEO

Radeeus

Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, 沉浸在我们的行业中, 与我们的团队无缝融合, understood our vision, 并产生了一流的结果. Toptal使与高级开发人员和程序员的联系变得非常容易.

Jason Kulik,联合创始人

ProHatch

作为一家资源有限的小公司,我们不能犯代价高昂的错误. Toptal为我们提供了一位经验丰富的程序员,他能够立即投入工作并开始做出贡献. 这是一次很棒的经历,我们会马上再来一次.

斯图尔特·波克尼校长

现场专用软件解决方案

我们使用Toptal聘请了一位具有丰富的Amazon Web Services经验的开发人员. 我们面试了四位候选人,其中一位非常符合我们的要求. 这个过程迅速而有效.

Abner Guzmán Rivera,首席技术官和首席科学家

Photo Kharma

Sergio是一个很棒的开发者. 一流,反应迅速,工作效率高.

Dennis Baldwin,首席技术专家和联合创始人

PriceBlink

和Marcin一起工作是一种乐趣. He is competent, professional, flexible, 并且非常迅速地理解需要什么以及如何实现它.

André Fischer, CTO

POSTIFY

我们需要一位能立即开始我们项目的专业工程师. 西马纳斯的工作超出了我们的预期. 不需要采访和追踪专家开发人员是一种非常节省时间的方法,并且让每个人都对我们选择切换平台以使用更健壮的语言感到更舒服. Toptal使这一过程变得简单方便. Toptal现在是我们寻求专家级帮助的首选之地.

Derek Minor, Web开发高级副总裁

Networld Media Group

Toptal的开发人员和架构师都非常专业,也很容易共事. 他们提供的解决方案价格合理,质量上乘,缩短了我们的发行时间. Thanks again, Toptal.

Jeremy Wessels, CEO

Kognosi

我们与Toptal合作非常愉快. 他们为我们的应用程序找到了完美的开发人员,让整个过程变得非常简单. 它也很容易超出最初的时间框架, 我们可以在整个项目中保持同一个承包商. 我们强烈推荐Toptal,因为它可以快速无缝地找到高素质的人才.

Ryan Morrissey, CTO

应用商业技术有限责任公司

我对Toptal印象深刻. 我们的开发人员每天都和我交流,他是一个非常强大的程序员. 他是一个真正的专业人士,他的工作非常出色. 5 stars for Toptal.

Pietro Casoar, CEO

Ronin Play Pty Ltd

与Toptal合作是一次很棒的经历. Prior to using them, 我花了相当多的时间面试其他自由职业者,但没有找到我需要的. 在与Toptal合作后,他们在几天内就为我找到了合适的开发者. 与我一起工作的开发人员不仅提供高质量的代码, 但他也提出了一些我没有想到的建议. 我很清楚,阿莫里知道自己在做什么. Highly recommended!

George Cheng, CEO

Bulavard, Inc.

作为一名Toptal合格的前端开发人员,我还经营着自己的咨询业务. 当客户来找我帮忙填补他们团队中的关键角色时, Toptal是我唯一愿意推荐的地方. Toptal的所有候选人都是精英中的精英. Toptal是我在近5年的专业在线工作中发现的性价比最高的网站.

Ethan Brooks, CTO

Langlotz Patent & Trademark Works, Inc.

In Higgle's early days, 我们需要一流的开发者, at affordable rates, in a timely fashion. Toptal delivered!

Lara Aldag, CEO

Higgle

Toptal能让你轻松找到合适的人选,让你放心,因为他们有能力. 我肯定会向任何寻找高技能开发人员的人推荐他们的服务.

Michael Gluckman,数据经理

Mxit

Toptal将我们的项目与最优秀的开发人员快速匹配的能力非常出色. 开发人员已经成为我们团队的一部分, 我对他们每个人所表现出的敬业精神感到惊讶. 对于那些希望与最好的工程师远程工作的人来说,没有比Toptal更好的了.

Laurent Alis, Founder

Livepress

Toptal让寻找合格的工程师变得轻而易举. 我们需要一个有经验的ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.

Jeff Kelly, Co-Founder

Concerted Solutions

我们需要一些Scala的短期工作,Toptal在24小时内为我们找到了一位优秀的开发人员. 这在其他平台上是不可能实现的.

Franco Arda,联合创始人

WhatAdsWork.com

Toptal为快速发展和规模化的企业提供不妥协的解决方案. 我们通过Toptal签约的每一位工程师都迅速融入了我们的团队,并在保持惊人的开发速度的同时,将他们的工作保持在最高的质量标准.

Greg Kimball,联合创始人

nifti.com

How to Hire React.. js开发者通过Toptal

1

与我们的行业专家交谈

Toptal的工程总监将与您一起了解您的目标, technical needs, and team dynamics.
2

与精心挑选的人才一起工作

几天之内,我们将向您介绍正确的React.Js开发人员为您的项目. 平均匹配时间在24小时以下.
3

绝对合适

使用你的新React.Js开发者试用期(满意才付费), 在订婚前确保他们是合适的人选.

寻找拥有相关技能的专家

在我们的人才网络中访问大量熟练的开发人员,并在48小时内雇用最优秀的3%.

FAQs

  • How are Toptal React.Js开发者不同?

    在Toptal,我们会彻底筛选React.Js的开发人员,以确保我们只匹配你的人才的最高水平. Of the more than 200,每年有5000人申请加入Toptal网络, 只有不到3%的人能达标. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.

  • Can I hire React.在不到48小时内通过Toptal完成?

    根据可用性和进度的快慢,你可以开始使用React.注册后48小时内的Js开发者.

  • Toptal React的无风险试用期是多长时间.js developers?

    我们确保你和你的React之间的每一个约定.Js开发者从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, 我们要么分道扬镳, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.

Share
React.js

如何雇佣优秀的反应者.js Developer

Intro

客户端应用程序开发的另一波发展浪潮即将到来. It involves ES6, JavaScript的新版本, universal applications, functional programming, 服务器端渲染和webpack, 就像一个带着喷气背包的任务执行者.

此外,React现在非常热门. 它是构建高性能组件的一个简洁而优秀的框架. 因为我们已经有了这些, 你怎样才能找到缺失的那一块——能够接受它并为你构建最先进软件的工程师?

React彻底改变了我们对应用程序的看法

React彻底改变了我们对应用程序的看法

React Plainly

First things first. 在React仅仅作为一个视图库进行营销的背景下, 由于客户端应用程序不仅仅由视图组成, React不会是你的候选人会使用的唯一工具. 不过,这是一个至关重要的问题. 以下是一些筛选问题.

问:React中的高阶组件是什么?

一般来说,高阶组件是一个包装器. 它是一个以组件为参数并返回一个新组件的函数. 它可用于扩展或修改所包含组件的行为(包括呈现的输出). 在不修改React中的底层类的情况下改变行为的组件的使用很好地体现在装饰器模式中.

高阶组件是使用组合构建组件的一种方式. 一个示例用例是抽象出代码片段, 对于多个组件来说是通用的:

Player.js

从React中导入React, {Component, PropTypes};

导出默认类Player扩展组件{
  static propTypes = {
    black: PropTypes.bool,
    data: PropTypes.object,
    styles: PropTypes.object
  };

  static defaultProps = {
    black: false,
    data: {
      src: null,
      caption: ''
    },
    styles: {}
  };

  render() {
    Const{黑色,数据,样式}=这个.props.data;
    return (
      
); } }

考虑这个组件,它包含一个 Player but also contains module markup. 该标记可以被其他组件重用. 让我们将其抽象,并允许属性的传递:

Player.js

从React中导入React, {Component, PropTypes};
导入模块容器./ModuleContainer';

导出类PlayerInline扩展组件{
  static propTypes = {
    data: PropTypes.object
  };

  static defaultProps = {
    data: {
      src: null,
      caption: ''
    }
  };

  render() {
    Const {src,标题}=这个.props.data;
    return (
      
); } } const Player = new ModuleContainer(Player); export default Player;

ModuleContainer.js

从React中导入React, {Component, PropTypes};

Module container (Module) {
  返回类扩展组件{
    static propTypes = {
      black: PropTypes.bool,
      styles: PropTypes.object
    };

    render() {
      Const{黑色,样式}=这个.Props // eslint-disable-lint
      return (
        
); } }; }

现在我们仍然可以使用前面的实例化方式 Player, no changes here. 如果我们愿意,我们也可以使用内联播放器. 然后,模块包装器标记和props可以与其他模块一起使用:




高阶组件是对ES6中React不再使用混合的设计决策的直接回应, 哪一个是在2015年初完成的. In fact, 高阶组件使结构更清晰, 而且它们更容易维护,因为它们是分层的, 然而,由于结构平坦,混合器有更大的冲突机会.

想了解更多,请点击 另一个高阶组件的用例,重点是消息传递道具. Also check the 高阶组件优于混合组件的介绍, 由丹·阿布拉莫夫概述, the author of Redux, and an 本·纳德尔使用refs的高级构图的有趣例子.

问:应该依赖哪些组件 state, and why?

考虑到关注点的分离,将表示与逻辑分离似乎是明智的. 在React的世界里,一切都是组件. 但是,用于呈现数据的组件不应该必须从API获取数据. 惯例是要有 presentational (哑)组件无状态,和 container 依赖于状态的组件.

也就是说,惯例并不严格. React中也有不止一种状态类型. 尽管众说纷纭, 在表示组件,特别是交互式组件中使用局部状态似乎并不是一个坏的做法.

另一个区别是组件类和无状态函数组件之间的区别. 显然,后者没有状态. 说到无状态函数组件, 官方建议尽可能使用它们.

Q: What is JSX? 它是如何工作的,为什么要使用它?

JSX是React JavaScript的语法糖, 这使得编写组件变得容易,因为它具有类似xml的语法. 然而,JSX是JavaScript而不是HTML, React将JSX语法转换为纯JavaScript.

乍一看,它看起来很笨拙,尽管许多熟练的开发人员现在已经习惯了. 使用它的主要原因是简单. 定义即使是稍微复杂的结构,最终也会呈现为HTML,这可能是令人生畏和重复的:

React.createElement('ul', {className: 'my-list'}, 
  React.createElement('li', {className: 'list-element'}, 
    React.createElement('a', {className: 'list-anchor', href: 'http://google . '.com' }, 'Toptal.com'),
    React.createElement('span', {className: 'list-text'}, '欢迎加入网络')
  ),
  React.createElement('li', {className: 'list-element'}, 
    React.createElement('div', {className: 'list-item-content'}, 
      React.createElement(someecustomelement, {data: elementData})
    )
  )
);

Versus:


考虑更复杂的元素导航组件,有多个嵌套. 简洁是大多数框架都有模板引擎的原因之一,而React有JSX.

To learn more, check 在容器组件上下文中对JSX进行了有影响力的讨论.

前端开发的新方法

ES6 (ECMA Script 2015), JavaScript的新版本,已经发布了一段时间. 开源社区中的大多数React材料都使用ES6,有时甚至是ES7. 新版本增加了JavaScript的表现力,并修复了该语言的一些问题. 目前的标准程序是使用 Babel,用于将ES6编译为ES5. 它允许我们用ES6编写代码, 并让它以ES5的形式在大多数当前浏览器上正确执行. 因此,你要雇佣的开发人员精通ES6是至关重要的.

问:ES6的函数有哪些新特性?

实际上有一些. 最突出的是箭头函数表达式, 这是编写匿名函数表达式的一种简洁方式:

var counterArrow = counter => counter++;
// equivalent to function (counter) { return counter++; }

这是一个显著的区别. 用箭头函数 this 对象捕获封闭作用域的值. 所以没有必要再写了 var that = this.

另一个不同之处在于参数的定义或传入方式. ES6带来了默认参数和rest参数. 当调用中没有提供参数的默认值时,默认参数是一种非常有用的设置参数默认值的方法. The rest parameters, 它们的语法与展开运算符相似, 允许以优雅的方式处理传递给函数的不确定数量的参数.

var businessLogic = (product, price = 1, ...rest) => {
  product.price = price;
  product.details = rest.map(detail => detail);
};

问:ES6和React中有哪些类?

ES6类提供了创建对象的方法,实际上仍然依赖于原型继承. 它们大多是语法上的糖,但非常方便. 但是,React类不需要它们.

React类是组件. 它们可以用三种方式定义:使用 React.createClass() 方法,使用ES6类,或者使用函数来创建无状态函数组件:

const Counter1 = React.createClass({
  propTypes: {
    count: PropTypes.number
  }

  defaultProps: {
    count: 0
  }

  render: function() {
    return Count: {this.props.count};
  }
});
类Counter2扩展组件{
  static propTypes = {
    count: PropTypes.number
  }

  static defaultProps = {
    count: 0
  }

  render() {
    return Count: {this.props.count};
  }
}
Counter3(props) {
  return Count: {props.count};
}

Counter3.propTypes = {
  count: PropTypes.number
};

Counter3.defaultProps = {
  count: 0
};

如前所述,建议尽可能使用无状态功能组件. 然而,这些组件尚未针对性能进行优化. 考虑以下GitHub问题在Redux和 React to learn more.

问:什么是本地样式,或者内联样式,web开发中样式的新趋势?

This one is pretty rad. 到目前为止,声明式CSS总是共享一个全局作用域. 要向可重用组件添加样式,开发人员必须仔细选择名称空间. Another thing, 有时使用CSS是很困难的, 因为有些风格需要计算, 所以单一的风格成为了一个例外. Of course, there is calc(),但这并不总是足够的.

Local styles,有时也被称为 inline styles,解决这两个问题. 现在可以将样式表绑定到组件,并且知道它们相对于其作用域保持本地. 这些样式不会影响其作用域之外的元素. 如果这还不够,这些样式在JavaScript中也很容易获得.

AlertWidget.scss

.alertWidget {
  font-variant: italics;
  border: 1px solid red;
  padding: 13px;
}

.alert {
  font-weight: 700;
  color: red;
}

AlertWidget.js

import React, {PropTypes} from ' React ';

AlertWidget(props) {
  Const styles = require('./AlertWidget.scss');
  return (
    

{props.alert}

{props.text}

); } AlertWidget.propTypes = { alert: PropTypes.text, text: PropTypes.text }; 导出默认AlertWidget;

并非所有的样式都必须是本地的,但它确实是一个非常强大的工具. To learn more, check 对当地风格有影响的介绍 and 在css技巧上讨论内联样式的优缺点

React彻底改变了我们对应用程序的看法

How Do You State

包含多个组件的应用程序, 特别是大型应用程序, 仅使用局部组件状态是否难以维护. 在React中添加控制器风格以外的逻辑也是一种不好的做法. 但是不用担心,已经有解决方案了.

问:React中的应用程序状态是什么,什么控制着状态?

答案很简单——它是一个对象,它表示应用程序的当前数据集和其他属性. 应用程序状态与组件本地状态的不同之处在于,它可以被多个组件引用.

另一个区别是不应该直接更改应用程序状态. 唯一可以更新它的地方是商店. 存储控制应用程序状态, 还定义可以被分派的动作, 比如用户交互的结果.

大多数React组件不应该依赖于应用范围. 表示组件应该能够访问数据片段, 但是这些数据应该通过属性提供给他们. In React, 惯例是只有容器元素调度操作并引用应用程序范围.

问:那么,在React中有哪些管理状态的工具呢?

在用React构建的应用程序中处理应用程序状态通常是在React之外完成的. Facebook, who brought us React, 还介绍了Flux架构和它的实现. 客户端应用程序的Flux部分是前端业务逻辑发生的地方.

React和Flux没有紧密耦合. Flux的实现也不止一个. 事实上,有很多,还有其他受Flux启发的非常受欢迎的. 最流行的Flux实现是Facebook Flux、Reflux和Alt.js. 还有基于Flux原理的Redux,很多人认为它是在Flux的基础上改进的.

这些库都可以完成工作. 然而,开发者必须做出选择,而且必须有意识地做出选择. 做出选择的一些合理标准:

  • 这个存储库有多流行? 查找GitHub星星和分叉数.
  • 框架是否得到维护?? 检查在过去两周内完成了多少提交. 此外,阅读作者的笔记和开放和关闭的问题计数.
  • 文档的状态是什么? 这一点尤其重要, 团队成员可以增加或更改,但软件的代码库需要清晰.
  • 开发人员对特定框架的了解程度如何?

在撰写本文时,Redux是迄今为止最流行的一种. Flux的作者也对它进行了审查,他们认为这是一项出色的工作. 文档是优秀的,有30个免费的短视频教程课程的作者. 框架本身非常简单,并且最符合函数式编程范式.

Alt.Js也有一个充满活力的社区, 在许多文章中受到高度赞扬, 并且有很好的文档. Alt.js也是一个纯Flux实现. 为了支持上述两个实现,放弃了其他几个实现.

这是Redux的作者Dan Abramov写的一篇关于Flux不同实现的文章

问:什么是单向数据流? 它带来了什么好处?

单向数据流构成了对应用程序状态的所有更改都以相同的通用方式完成. 这个流程在Flux实现和Redux中遵循类似的模式. 模式从一个动作开始, 哪个由存储分派和处理,并具有更新状态的效果, 这反过来会导致更新的视图.

通过遵循这种模式, 使用Flux或Redux管理其状态的应用程序是可预测和规范化的. 每个状态版本都是调用一组操作的结果. 这意味着现在可以更容易地通过监视哪些操作被调度来重现每个用户体验. 下面是一个有用的例子 关于在Auth0上使用Flux记录和重放用户操作的文章.

它在调试时也非常有用. In fact, 受Flux启发的最流行的框架之一, Redux, 是创建一套依赖于Flux概念的新开发工具的副作用吗. 有一个演讲,叫做 丹·阿布拉莫夫(Dan Abramov)的《365足球》(Hot Reloading with Time Travel).

Miscellaneous

编程有很多方法,软件工程也有很多方法. 编程范例的差异远远超出了风格. 最近,有很多人提到JavaScript中的函数式编程. 有许多优势等待着寻求拥抱它的开发人员.

问:解释函数式编程范式.

函数式编程是一种范式,它强调:

  • Writing pure functions.
  • 没有一个全球性的状态.
  • Not mutating data.
  • 与高阶函数的复合.

纯函数不会产生副作用, 它们也是幂等的, 这意味着当给定相同的参数时,它们总是返回相同的值.

依赖函数式编程的程序有两个主要优点. 它们很容易理解,也很容易测试. In contrast, 将变量赋值到全局作用域, relying on events, 数据的变化很容易使应用程序变得混乱. 从JavaScript开发人员的角度来看, 我甚至会说,这很容易导致代码难以理解,容易出错.

JavaScript并不是严格意义上的函数式语言. However, 具有一等公民的功能, 这意味着它们可以像其他类型一样被分配和传递,并且是可组合的, 对于JavaScript开发人员来说,采用函数式编程当然是可能的.

最近有许多文章赞扬这种风格. 然而,似乎最重要的是新工具,它们变得非常流行. 这些工具在不同程度上结合了关键的函数式编程思想, and include Redux, React的最新更新, 还有像培根这样的人.js.

问:如何在React中倾向于函数式编程?

首先,编写React代码主要集中在编写好的JavaScript代码上. 用JavaScript编写函数式编程的一般方法是保持一致的编程风格, focused on:

  • Writing pure functions.
  • 保持函数小.
  • 总是返回一个值.
  • 组合函数(利用高阶函数).
  • Never mutating data.
  • 不会产生副作用.

JavaScript中有许多适合函数式编程的工具,其中包括: .map(), .reduce(), .filter(), .concat. ES6还提供了一些新的特性,比如原生承诺(native promises)或 …spread operator.

此外,还有一些可用的线索,比如 eslint 特别是结合衬板的配置 Airbnb JavaScript and React style guides. 还有其他的工具,比如 immutable.js and code patterns like deepFreeze function,这有助于防止数据突变,这在测试中特别有价值.

React version 0.14引入了无状态功能组件, 从面向对象的编程向函数式编程迈进了哪一步. 这些组件是最小的,应该尽可能使用. 通常,React应用程序中的绝大多数组件都应该是表示的.

使用Redux是函数式编程方向上的又一步. Redux使用函数调用,不像Flux依赖于事件. 所有Redux reducer都是纯函数. Redux从不改变应用程序状态. 相反,reducer总是返回一个新状态.

问:如何测试React应用程序?

最后但并非最不重要的是开发人员的测试方法. 回归问题是挫败感的最终来源. 除了允许开发人员和客户确保应用程序按预期工作之外, 测试是对回归问题的补救措施.

构建持续集成或部署环境,在其中自动测试每个推送的提交, 如果成功部署, 已经成为标准了吗. 它非常容易设置,许多SaaS都提供免费计划. Codeship 例如,它具有良好的集成和免费计划. 另一个很好的例子是 Travis CI 哪一种提供了更稳定和成熟的感觉,并且对开源项目是免费的.

还必须有实际的测试要运行. 通常使用一些框架编写测试. Facebook为React提供了一个测试框架, it is called Jest, 并以流行的茉莉花为原型. 另一个更灵活的行业标准是Mocha, 通常与测试员Karma结合在一起.

React提供了另一个超级特性,testtils. 它们提供了一套完整的工具,专门用于测试组件. 它们创建一个抽象,而不是将组件插入到实际的页面中, 哪一个允许使用单元测试编译和测试组件.

要获得更多关于测试React应用程序的见解,您可以阅读我们的 blog. 我也推荐大家在 egghead.io, 那里有一些关于React的系列, 还有Flux和Redux, 甚至是一个专注于 测试React应用程序.

Conclusion

React为客户端应用程序带来了高性能,并使使用它的项目处于良好的位置. 图书馆被广泛使用,并有一个充满活力的社区. 大多数情况下,转向React还需要包含其他工具来交付完整的应用程序. 有时,它可能需要更全面的技术升级.

众所周知,Web开发和移动应用开发(Android和iOS)的发展速度非常快. 新工具得到普及,变得有价值,并准备在几个月内使用. 这些创新不仅仅包括工具, 并且常常跨到代码风格, 应用程序结构和系统架构. 前端开发人员需要构建可靠的软件并优化流程. 最优秀的人思想开明,能自信地提出合理的论点. Toptal engineers 还能领导敏捷开发团队吗, projects, 开发过程, 并为产品的效益引进新技术.

Top React.js开发者需求量很大.

Start Hiring