当前位置: 首页 > 知识库问答 >
问题:

理解React代码[重复]

艾凌龙
2023-03-14

我正在学习React.js。我熟悉下面的代码

class Login extends Component {
    state = { email: '',};
    render = () => {
        return (//some JSX code);
    }
}

但我得到了以下代码作为问题的解决方案。

const PrivateRoute = ({ component: Component, ...rest }) => (
    <Route
      {...rest}
        render={props =>
            (Auth.isAuthenticated() ? ( <Component {...props} />) : (<Redirect to={{ pathname: '/',}}/>))
      }
    />
);

我不能理解上面的代码。谁能帮我理解一下?

这里的{... rest}是什么?

我知道播音员。为什么我在这里传递它({component:component,…rest})和这里

为什么呈现()看起来像这个呈现={props=

谢谢大家。


共有2个答案

尹俊贤
2023-03-14

要回答第一个问题,请使用对象扩展运算符,引用MDN:

扩展语法允许在预期零个或多个参数(用于函数调用)或元素(用于数组文字)的位置展开iterable,例如数组表达式或字符串,或者在预期零个或多个键值对(用于对象文字)的位置展开object表达式。

在您的例子中,它所做的是将所有的props(除了组件)作为props传递给组件。

关于第二个问题-这基本上是渲染道具模式。请参阅文档进行解释,因为它很长。但是基本上,Route组件将函数作为其renderprop,该函数的职责是基于传递给它的props呈现一些内容。

端木权
2023-03-14

{…rest}是对象ref的分解结构:https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment 在react中,您可以将组件编写为组件类(托管组件)的扩展或PureComponent或Functional组件(非托管组件)的扩展。您需要的是一个功能组件。分解是ES6的一项功能,而组件是react的功能,您可以在react官方文档中找到所有信息和模式

 类似资料:
  • 我遇到了一些javascript。我不理解代码执行的流程。 我认为输出是'ap'然后'ap'。但我得到了'ple'和'ap'。这是怎么发生的?

  • 本部分试图从专题和业务流程的角度来剖析 Neutron 代码,以便理解如此设计的内涵。

  • 本文向大家介绍使用ES6语法重构React代码详解,包括了使用ES6语法重构React代码详解的使用技巧和注意事项,需要的朋友参考一下 使用ES6语法重构React组件 在Airbnb React/JSX Style Guide中,推荐使用ES6语法来编写react组件。下面总结一下使用ES6 class语法创建组件和以前使用React.createClass方法来创建组件的不同。 创建组件 ES

  • 我有下面的一段代码,它正在打印:一些(600)作为输出。 不知道加法是如何在“for”循环中发生的。 在下面,它混淆了“for”循环的代码块内发生的事情以及变量“y”的计算方式。有人能帮忙吗?

  • 2.1 理解代码窗口 您可以通过代码窗口查看当前被调试程序的源代码。CGDB只能同时显示一个源文件。当用户调试程序的时候,通过 next 和 step 命令,CGDB将会更新源代码以及行号,以此提醒您调试进行到了何处。 CGDB有几个新特性能让调试比使用旧的GDB更方便。其中,当您在调试C,C++或ADA程序的时候,源代码是高亮的。这个特性可以让您更加快速的找到源文件中的特定代码。如果您需要让CG