网易首页 > 网易号 > 正文 申请入驻

React开发人员面临的三大编码挑战

0
分享至

作者:Michael Pautov来源:hackernoon.com

React 库很大并且有很多概念,每个 React项目都需要专家级别的开发人员。React专家不仅要熟悉React相关概念,还应该知道如何在实时项目中使用它们。

但是招聘到专家级别的React开发人员并不容易。因为只有经验丰富的开发人员才能解决开发中的编码挑战,例如高级的概念。在本文,将为你列出 React 专家面临的三大编码挑战。

创建高阶组件以重用组件逻辑

高阶组件是开发人员用于重用组件逻辑的高级技术。重用代码是 React 专家应该具备的一项重要技能。具有可重用性的主要原因是代码优化。

在此编码挑战中,你可能会被要求创建三个具有相似组件逻辑的不同组件。因此,你必须创建一个具有组件逻辑的高阶组件,并且它将被其他三个组件重用。

对于这个挑战,你有三个组件,每个组件都包含一个按钮,该按钮将状态中的值增加一个特定的数字。假设,三个组件是:

  • “ComponentA”,其中按钮将值增加 2。
  • “ComponentB”,其中按钮将值增加 20。
  • “ComponentC”,其中按钮将值增加 200。

首先,用逻辑创建一个 HOC。

  • mport { useState } from "react";
    const HigherOrderComponent = (Component, incrementValue) => {
    const HOCFun = () => {
    const [value, setValue] = useState(0);
    const incrementHandler = () => {
    setValue(value + incrementValue);
    return
  • ;
    };
    return HOCFun;
    };
    export default HigherOrderComponent;

“HigherOrderComponent”有两个参数——一个组件和状态将增加的数字。然后,创建一个具有组件逻辑的函数。该逻辑包含一个状态变量,其值由处理程序使用传入数字递增。

这个函数使用 props - value 和 incrementHandler 返回传入的组件。请记住,这是使用 HOC 制作的新组件。最后,这个函数会被返回,因为它将在现有组件中使用。

现在,让我们在“ComponentA”、“ComponentB”和“ComponentC”中使用 HOC。

组件A:

组件B:

组件C:

这些组件都不包含任何逻辑,但一切正常。

发生这种情况是因为使用高阶组件来实现可重用性。

现在,请记住,此编码挑战的动机是检查你如何创建高阶组件并重用逻辑。

实现和使用 Redux

随着应用程序的增长,管理全局状态变得困难。Redux 是最流行的第三方库,用于通过 React 进行状态管理。专业的 React 开发人员应该了解 Redux 是什么以及它是如何工作的。所以面试可以要求你在一个基本的 React 应用程序中实现 Redux。

在这个编码挑战中,面试官想检查你是如何实现和使用 Redux 的。因此,你可能会获得一个包含两个组件的基本 React 应用程序——一个包含用于增加和减少全局状态的按钮,另一个包含用于显示值的按钮。

首先,创建减速器。

  • export const reducer = (state = { value: 0 }, action) => {
    switch (action.type) {
    case "INCREMENT_VALUE":
    return {
    ...state,
    value: action.payload + 1,
    case "DECREMENT_VALUE":
    return {
    ...state,
    value: action.payload - 1,
    default:
    return { ...state };

除了类型之外,reducer 还会从动作中接收有效载荷。

然后,创建动作创建者。你也可以创建普通动作,但创建动作创建者表明你使用过复杂的 Redux。

  • export const incrementValueAction = (value) => {
    return {
    type: "INCREMENT_VALUE",
    payload: value,

    export const decrementValueAction = (value) => {
    return {
    type: "DECREMENT_VALUE",
    payload: value,

接下来,商店。

  • import { createStore } from "redux";
    import { reducer } from "./Reducers/reducers";
    const initialState = {
    value: 0,
    const store = createStore(reducer, initialState);
    export default store;

最后,使用 Provider 为商店包装应用程序。

上半场准备好了。Redux 已实现,但作业尚未完成,因为在 React 组件中使用它仍然未决。为此,我们将使用 react-redux 钩子。请记住,不要使用旧的 connect() 函数。

首先,安装“react-redux”,然后使用组件中的 useDispatch 和 useSelector react-redux 钩子。

组件 1:

组件2:

i

使用 react-redux hooks,按钮将起作用。

现在,主要动机是检查你的 redux 知识。面试可能会要求你在其中使用 redux-thunk,从而使这个挑战变得更加困难。此外,使用 react-redux 钩子可以给人更好的印象并避免使用旧技术。

在不使用 props 的情况下在组件之间共享数据

在这个编码挑战中,面试可能会给你一个带有多个嵌套组件的 React 应用程序,如下所示。

组件“B”是“A”的子组件,而组件“C”和“D”是“B”的子组件。

假设组件“A”中有一个对象,并且在“C”和“D”中需要它。有两种方法可以在不使用 props 的情况下在这些嵌套组件中共享此对象。第一种是使用 Redux。但是在面试官想要避免使用 props 情况下,永远不要使用 Redux,因为 Redux 是为复杂的项目设计的。实际上,面试官期待这个编码挑战的“场景”。

对于这个挑战,首先,创建一个场景应用。

  • import React from "react";
    const DemoContext = React.createContext();
    export default DemoContext;

然后,使用此场景,将组件树包装在 Provider 中。

现在,我们可以访问组件“C”和“D”中的“obj”。有两种使用场景的方法 - 使用 Consumer 和 useContext hook。更喜欢使用 useContext hook,因为它是现代更好的方法。

C:

D:

让我们检查输出。

它不使用道具就可以工作!

对于专业的React开发人员来说,编码挑战可能会很困难。面试官想要检查你对React的了解以及你的工作经验。因此,挑战将有一些高级概念,如HOC、Redux和场景应用

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
35岁房产中介加班发病,心梗抢救8天不幸离世,留下3个子女,最小仅2岁;工作聊天记录显示多次被罚跑、罚抄,生前希望每月能有3天陪伴家人

35岁房产中介加班发病,心梗抢救8天不幸离世,留下3个子女,最小仅2岁;工作聊天记录显示多次被罚跑、罚抄,生前希望每月能有3天陪伴家人

都市快报橙柿互动
2026-05-21 20:08:48
5家中国电车澳洲被罚4700万!国内惯出的毛病终于挨揍了!

5家中国电车澳洲被罚4700万!国内惯出的毛病终于挨揍了!

三农老历
2026-05-22 05:27:36
FSD入华是中国智驾的成人礼

FSD入华是中国智驾的成人礼

智远同学
2026-05-21 17:41:42
你能信?巴萨不如英超降级队!巴萨夺冠奖金5491万欧,伯恩利却有5800万欧补偿

你能信?巴萨不如英超降级队!巴萨夺冠奖金5491万欧,伯恩利却有5800万欧补偿

懂个球
2026-05-22 00:01:05
小因扎吉:我们是本赛季全世界唯一不败球队,很遗憾无缘冠军

小因扎吉:我们是本赛季全世界唯一不败球队,很遗憾无缘冠军

懂球帝
2026-05-22 06:56:16
交大樊同学和协和董小姐,其实是一类人

交大樊同学和协和董小姐,其实是一类人

互联网思维
2026-05-21 23:34:37
俄官方通讯软件被曝监控用户:能录屏、偷录音、查VPN

俄官方通讯软件被曝监控用户:能录屏、偷录音、查VPN

摸鱼算法
2026-05-22 02:19:52
重庆一男子朋友圈称“女儿自行车被同小区9岁男孩偷走”,多次侮辱对方“小偷”“猪狗不如”等;法院:删除朋友圈并道歉、赔偿7000元

重庆一男子朋友圈称“女儿自行车被同小区9岁男孩偷走”,多次侮辱对方“小偷”“猪狗不如”等;法院:删除朋友圈并道歉、赔偿7000元

三湘都市报
2026-05-21 21:48:52
从BOSS直聘财报,看招聘市场的三大变化

从BOSS直聘财报,看招聘市场的三大变化

定焦One
2026-05-21 18:43:23
石破天惊!俄方突然放风:普京特朗普11月在中国“会晤”?

石破天惊!俄方突然放风:普京特朗普11月在中国“会晤”?

菁菁子衿
2026-05-21 15:11:04
丈夫和情夫争妻,抓到“滚”字退出,09年妻子哭诉他俩争我死一个

丈夫和情夫争妻,抓到“滚”字退出,09年妻子哭诉他俩争我死一个

汉史趣闻
2026-05-17 10:19:44
钱再多有什么用?67岁身价千万的李幼斌现状曝光,给所有人提了醒

钱再多有什么用?67岁身价千万的李幼斌现状曝光,给所有人提了醒

林轻吟
2026-05-22 07:33:52
1990年林青霞与亲姐河南相认,对方一贫如洗,她有没有帮帮姐姐?

1990年林青霞与亲姐河南相认,对方一贫如洗,她有没有帮帮姐姐?

飘飘然的娱乐汇
2026-05-21 21:30:06
最高溢价超6倍!排队人太多,部分门店临时取消发售

最高溢价超6倍!排队人太多,部分门店临时取消发售

南方都市报
2026-05-22 10:42:18
形势有多严峻?网传中学生都感到极其压抑了,评论区炸锅…

形势有多严峻?网传中学生都感到极其压抑了,评论区炸锅…

慧翔百科
2026-05-22 11:33:16
200架波音大单落地,中国成功从美国手中,换回一个关键承诺

200架波音大单落地,中国成功从美国手中,换回一个关键承诺

流史岁月
2026-05-21 15:25:03
男性延长至68岁,女性延长至63岁!5月1日起已开始执行

男性延长至68岁,女性延长至63岁!5月1日起已开始执行

保险课堂
2026-05-20 22:56:01
联合声明:中国支持俄罗斯维护其主权和领土完整的努力

联合声明:中国支持俄罗斯维护其主权和领土完整的努力

俄罗斯卫星通讯社
2026-05-21 15:10:15
“突然让我们跳伞,我都没换衣服……”天津24岁女员工和跳伞教练双双遇难!女子原计划今年订婚,落水约6小时遗体被打捞上岸

“突然让我们跳伞,我都没换衣服……”天津24岁女员工和跳伞教练双双遇难!女子原计划今年订婚,落水约6小时遗体被打捞上岸

都市快报橙柿互动
2026-05-22 11:01:41
吓人 38岁门神入选巴西队后激动到昏迷:趴在地上不动 家人没发现

吓人 38岁门神入选巴西队后激动到昏迷:趴在地上不动 家人没发现

风过乡
2026-05-22 12:24:28
2026-05-22 14:19:04
Nodejs开发
Nodejs开发
分享只有程序员懂的干货
648文章数 823关注度
往期回顾 全部

科技要闻

雷军:输给特斯拉不丢人

头条要闻

85岁"核武老人"发声:智障儿子有糖尿病 请网友别投喂

头条要闻

85岁"核武老人"发声:智障儿子有糖尿病 请网友别投喂

体育要闻

最糟糕裁判?他想要退役当市长

娱乐要闻

周也恋情曝光!对象身份不简单

财经要闻

又一存储芯片类产品,价格暴涨300%

汽车要闻

配1.5L动力/增加新配色 吉利帝豪向上系列将于5月24日上市

态度原创

健康
数码
亲子
艺术
教育

外泌体与干细胞竟是“快递”与“工厂”的关系?

数码要闻

独到功能+艺术品气质:旗舰一体机YOGA 32 Ultra Aura体验报告

亲子要闻

再有4天带家人回中国,小三宝这几天成了混世小魔头,鬼灵精怪的

艺术要闻

海市蜃楼水中树

教育要闻

收藏!2026山东高考准考证打印流程+忘记密码怎么办?

无障碍浏览 进入关怀版