当前位置: 首页 > 科技观察

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

时间:2023-03-18 21:02:25 科技观察

React开发人员面临的3大编码挑战React专家不仅应该熟悉React相关概念,还应该知道如何在实时项目中使用它们。但是招募专家级的React开发人员并不容易。因为只有经验丰富的开发人员才能解决开发中的编码挑战,例如高级概念。在本文中,我将列出React专家面临的三大编码挑战。创建高阶组件以重用组件逻辑高阶组件是开发人员用来重用组件逻辑的高级技术。重用代码是React专家应该具备的一项重要技能。可重用性的主要原因是代码优化。在此编码挑战中,您可能会被要求创建三个具有相似组件逻辑的不同组件。所以你必须创建一个高阶组件,它具有组件的逻辑,它将被其他三个组件重用。对于这个挑战,您有三个组件,每个组件都包含一个按钮,用于将状态中的值递增特定数字。假设,这三个组件是:“ComponentA”,其中按钮将值增加2。“ComponentB”,其中按钮将值增加20。“ComponentC”,其中按钮将值增加200。首先,创建一个HOC与逻辑。import{useState}from"react";constHigherOrderComponent=(Component,incrementValue)=>{constHOCFun=()=>{const[value,setValue]=useState(0);constincrementHandler=()=>{setValue(value+incrementValue));};return;};returnHOCFun;};exportdefaultHigherOrderComponent;“HigherOrderComponent”有两个参数-一个组件和状态将递增的数字。然后,使用组件的逻辑创建一个函数。该逻辑由一个状态变量组成,其值由处理程序使用传入的数字递增。该函数返回传入的带有props-value和incrementHandler的组件。请记住,这是一个使用HOC制作的新组件。最后,返回该函数,因为它将在现有组件中使用。现在,让我们在“ComponentA”、“ComponentB”和“ComponentC”中使用HOC。组件A:importHigherOrderComponentfrom"./HigherOrderComponent";constComponentA=({value,incrementHandler})=>{return(

Incrementby2

{value}

);};exportdefaultHigherOrderComponent(ComponentA,2);ComponentB:importHigherOrderComponentfrom"./HigherOrderComponent";constComponentB=({value,incrementHandler})=>{return(
Incrementby29

{value}

);};exportdefaultHigherOrderComponent(ComponentB,20);组件C:importHigherOrderComponentfrom"./HigherOrderComponent";constComponentC=({value,incrementHandler})=>{return(
Incrementby200

{value}

);};exportdefaultHigherOrderComponent(ComponentC,200);这些组件都不包含任何逻辑,但一切正常。发生这种情况是因为使用了高阶组件来实现代码的可重用性。现在,请记住,这个编码挑战的动机是检查您如何创建高阶组件和重用逻辑。实施和使用Redux随着应用程序的增长,管理全局状态变得困难。Redux是使用React进行状态管理的最流行的第三方库。专业的React开发人员应该了解Redux是什么以及它是如何工作的。因此,面试可能会要求您在基本的React应用程序中实现Redux。在这个编码挑战中,面试官想检查你是如何实现和使用Redux的。因此,您最终可能会得到一个包含两个组件的基本React应用程序-一个带有用于递增和递减全局状态的按钮,另一个带有用于显示值的按钮。首先,创建减速器。exportconstreducer=(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还从操作中接收有效载荷。然后,创建一个动作创建器。你也可以创建普通的action,但是创建actioncreator表明你使用了复杂的Redux。exportconstincrementValueAction=(value)=>{return{type:"INCREMENT_VALUE",payload:value,};};exportconstdecrementValueAction=(value)=>{return{type:"DECREMENT_VALUE",payload:value,};};下一步,创建商店。import{createStore}from"redux";import{reducer}from./Reducers/reducers";constinitialState={value:0,};conststore=createStore(reducer,initialState);exportdefaultstore;最后,使用Provider为商店程序打包应用程序。import{Provider}from"react-redux";importstorefrom"./store";importComponent1from"./Components/Component1";importComponent2from"./Components/Component2";functionApp(){return(
);}exportdefaultApp;上半场已经准备就绪。Redux已经实现,但工作还没有完成,因为在React组件中使用它仍然悬而未决。为此,我们将使用react-redux钩子。请记住,不要使用旧的connect()函数。首先,安装“react-redux”,然后在你的组件中使用useDispatch和useSelectorreact-redux钩子。组件1:import{useDispatch,useSelector}from"react-redux";import{decrementValueAction,incrementValueAction,}from"../ActionCreators/actionCreators";constComponent1=()=>{constdispatch=useDispatch();constvalue=useSelector((state)=>state.value);console.log(value);constincrementHandler=()=>{dispatch(incrementValueAction(value));};constdecrementHandler=()=>{dispatch(decrementValueAction(value));};return(
IncrementDecrement
);};exportdefaultComponent1;组件2:import{useSelector}from"react-redux";constComponent2=()=>{constvalue=useSelector((state)=>state.value);return(

{value}


);};exportdefaultComponent2;使用react-redux钩子,按钮将起作用。现在,主要动机是检查你的redux知识。面试可能会要求您在其中使用redux-thunk,从而使这个挑战变得更加困难。此外,使用react-reduxhooks来给人更好的印象并避免使用旧技术。在不使用props的情况下在组件之间共享数据在这个编码挑战中,面试可能会给你一个具有多个嵌套组件的React应用程序,如下所示。组件“B”是“A”的子组件,组件“C”和“D”是“B”的子组件。假设您在组件“A”中有一个对象,并且您在“C”和“D”中都需要它。有两种方法可以在不使用props的情况下在这些嵌套组件之间共享此对象。第一种是使用Redux。但是如果面试官想避免使用props,千万不要使用Redux,因为Redux是为复杂项目设计的。实际上,面试官期待这个编码挑战的“预想场景”。对于这个挑战,首先,创建一个场景应用程序。importReactfrom"react";constDemoContext=React.createContext();exportdefaultDemoContext;然后,使用这个场景,将组件树包装在Provider中。importDemoContextfrom"../DemoContext";importBfrom"./B";constA=()=>{constobj={a:1,b:2,c:3,};return(
);};exportdefaultA;现在,我们可以访问组件“C”和“D”中的“obj”。使用场景有两种方式——使用Consumer和useContext钩子。更喜欢使用useContext挂钩,因为它是现代且更好的方法。C:importReact,{useContext}from"react";importDemoContextfrom"../DemoContext";constC=()=>{const{obj}=useContext(DemoContext);const{a,b,c}=obj;return(

ComponentC

{a}

{b}

{c}

);};exportdefaultC;D:importReact,{useContext}from"react";importDemoContextfrom"../DemoContext";constD=()=>{const{obj}=useContext(DemoContext);const{a,b,c}=obj;return(

ComponentD

{a}

{b}

{c}

);};导出默认D;让我们检查一下输出。它无需使用道具即可工作!对于专业的React开发人员来说,编码挑战可能很困难。面试官想检查你对React的了解以及你的工作经验。所以这个挑战会有一些高级的概念,比如HOC、Redux和场景应用。【翻译稿件,合作网站转载请注明原译者和出处.com】