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

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.

相关推荐
热点推荐
终于出手中央专案组进驻青岛黄岛区,彻查震惊全国青岛中医妇女案

终于出手中央专案组进驻青岛黄岛区,彻查震惊全国青岛中医妇女案

三农老历
2024-06-03 02:01:44
新款Model 3高性能版实测:0-400米加速耗时10.92秒

新款Model 3高性能版实测:0-400米加速耗时10.92秒

三言科技
2024-06-02 08:36:17
“免疫力强”的人,一般有10个特征,若能达到8个,恭喜!

“免疫力强”的人,一般有10个特征,若能达到8个,恭喜!

医学原创故事会
2024-06-01 15:58:06
新娘全裸海报迎宾!网红千惠太大胆惊呆众人!网友:这老公真大方

新娘全裸海报迎宾!网红千惠太大胆惊呆众人!网友:这老公真大方

西瓜爱娱娱
2024-06-02 11:38:14
“好身体”贪官,六旬年纪与20岁女下属生2个儿子,敛财超7000万

“好身体”贪官,六旬年纪与20岁女下属生2个儿子,敛财超7000万

天闻地知
2024-05-29 13:57:55
痴人说梦!大陆ECFA制裁效果不错,大陆不会给赖清德台阶下的

痴人说梦!大陆ECFA制裁效果不错,大陆不会给赖清德台阶下的

陆弃
2024-06-02 10:58:54
北大吴谢宇弑母通灵记录:通灵人自曝与其交流,得知弑母真实动机

北大吴谢宇弑母通灵记录:通灵人自曝与其交流,得知弑母真实动机

古今档案
2024-05-29 18:42:08
新加坡公开赛,国羽4金收官!双打外战全胜,陈雨菲不敌安洗莹!

新加坡公开赛,国羽4金收官!双打外战全胜,陈雨菲不敌安洗莹!

钉钉陌上花开
2024-06-02 20:15:20
你见过最恶心的亲戚是怎样的?网友:差点毁了我的婚礼!

你见过最恶心的亲戚是怎样的?网友:差点毁了我的婚礼!

小李子体育
2024-06-01 23:12:58
中方突然宣布“出手”,大批歼20抵近台海,赖清德逃跑路线被切断

中方突然宣布“出手”,大批歼20抵近台海,赖清德逃跑路线被切断

博文聊世界
2024-05-31 08:18:39
曾被吹捧上天,如今却“沦为笑柄”的4大坑人物品,劝你别再买了

曾被吹捧上天,如今却“沦为笑柄”的4大坑人物品,劝你别再买了

影视评论阿劲
2024-05-28 06:18:19
林彪去江西休养,顺路看望贺子珍,他走后贺子珍马上联系省委同志

林彪去江西休养,顺路看望贺子珍,他走后贺子珍马上联系省委同志

正史笔记
2024-05-30 17:11:48
中国正式官宣!大幅提高美欧进口车关税,美国欧洲反应激烈

中国正式官宣!大幅提高美欧进口车关税,美国欧洲反应激烈

星辰故事屋
2024-05-31 20:31:20
49岁的寇振海向演员李婷表白,李婷拒绝的说:寇老师你比我大25岁

49岁的寇振海向演员李婷表白,李婷拒绝的说:寇老师你比我大25岁

纵横三千年
2024-05-24 21:35:03
各取所需!3方6人交易方案:湖人卖里夫斯+17号签 米切尔联手詹眉

各取所需!3方6人交易方案:湖人卖里夫斯+17号签 米切尔联手詹眉

锅子篮球
2024-06-02 23:22:36
唐山打人案:主犯被判24年,背后保护伞被揪出,在法庭上忏悔

唐山打人案:主犯被判24年,背后保护伞被揪出,在法庭上忏悔

古书记史
2024-05-29 14:20:06
中国的“老朋友”,却彻底倒向了美国,曾对华出口大量先进装备?

中国的“老朋友”,却彻底倒向了美国,曾对华出口大量先进装备?

星辰故事屋
2024-05-26 18:56:46
13万的凯迪拉克,刺痛了多少中年“洗浴”男!

13万的凯迪拉克,刺痛了多少中年“洗浴”男!

正商参阅
2024-05-31 17:09:43
奥巴马俩女儿真不像话,小女儿胖成孕肚脸爆痘,长女比明星还敢穿

奥巴马俩女儿真不像话,小女儿胖成孕肚脸爆痘,长女比明星还敢穿

宋若时尚搭
2024-06-01 15:03:26
足球报:如果国足不能晋级世预赛18强,伊万也必将面临下课

足球报:如果国足不能晋级世预赛18强,伊万也必将面临下课

直播吧
2024-06-03 09:46:11
2024-06-03 11:16:49
Nodejs开发
Nodejs开发
分享只有程序员懂的干货
648文章数 824关注度
往期回顾 全部

科技要闻

2万字演讲|黄仁勋剧透 未来3年新品有这些

头条要闻

岛内舆论批赖清德上任后像"斗鸡" 表现比蔡英文还差

头条要闻

岛内舆论批赖清德上任后像"斗鸡" 表现比蔡英文还差

体育要闻

万人空巷!皇马举行欧冠夺冠庆典

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

黄仁勋的计划:涉及新AI平台 HBM4 机器人

汽车要闻

搭载华为HiCAR 传祺M6 MAX售14.58万元

态度原创

亲子
家居
手机
数码
军事航空

亲子要闻

弟弟哭到停不下来 哥哥帮忙扶下巴

家居要闻

静谧极简 让空间回归本质

手机要闻

小米 SU7 车机现身安兔兔:骁龙 8295 加持,流畅度位于第一梯队

数码要闻

古尔曼:WWDC 2024不会发布新硬件

军事要闻

朝国防省:朝方将暂停向韩方投放垃圾

无障碍浏览 进入关怀版