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

反应HOC和访问道具

廖绍辉
2023-03-14

我试图理解下面的反应HOC;

const withSecretToLife = (WrappedComponent) => {
  class HOC extends React.Component {
    render() {
      return (
        <WrappedComponent
          {...this.props}
          secretToLife={42}
        />
      );
    }
  }
    
  return HOC;
};

export default withSecretToLife;

下面是另一个组件;

import withSecretToLife from 'components/withSecretToLife';

const DisplayTheSecret = props => (
  <div>
    The secret to life is {props.secretToLife}.
  </div>
);

const WrappedComponent = withSecretToLife(DisplayTheSecret);

export default WrappedComponent;

具体来说我是想了解

  1. 如果它“DisplayTheCret”访问道具“secretToLife”或WrappedComponent?正确看待这一问题的方法是什么?
  2. “const WrappedComponent=withSecretToLife(displaytescret);”行位于“const displaytescret=props”行之后=

共有2个答案

陈霄
2023-03-14

DisplayTheSecret是一个简单的组件,它期望在其属性中找到秘书ToLife

withSecretToLife是一个函数,它接受WrappedComponent并返回另一个组件(我们称之为WrappingHOC

WrappingHOC返回WrappedComponent通过secretToLife传递给WrappedComponent,传递它自己的所有道具并添加一个新道具-secretToLife

const WrapmpingComponent=with SecreToLife(DisplayTheSecret);-这个也叫WrappeComponent,但是它和上面的WrappeComponent不一样(传递给函数的那个),它是WrappingHOCwithDisplayTheSecret让我们调用它结果组件

因此:

>

  • secretToLife是由ResultingComponent传递给displaythecret

    顺序很重要,在开始使用函数之前声明它总是一个好主意

    是一个普通的属性,当你创建一个组件时声明它

    DisplayTheSecret没有导出,因此不能在模块之外使用,除了它可以在没有包装的情况下使用

  • 莫骞仕
    2023-03-14

    >

  • 创建一个新的组件-WrappeComponent。它获得了道具秘书生活DisplayTheSecret本身没有秘书生活道具。

    在一般实践中,您应该使用上面已经定义的变量。因此,DisplayTheCret应该在其用法之上定义。但是,您可以随意使用它,因为变量和函数会自动提升到作用域的顶部。

    您可以这样做,但在运行时可能会导致错误。如果您决定使用显示Cret组件,而不使用HOC包装它Typescript通过在开发过程中生成打字来解决这些问题。

    它由DisplayTheSecret和HOC组成。

  •  类似资料:
    • 我是React Router的新手,我正试图通过一条路径将一些道具从我的父组件传递给子组件。 这是我的代码: 理想情况下,我希望能够从子组件触发。在做了一些研究后,我认为传递一个选项而不是会传递它,但是它不会。知道如何将函数传递到路由组件中吗?

    • 在本页React Native State on React Native docs中,我们有以下语句: 道具由父级设置,并且在组件的整个生存期内都是固定的。 但是,在本页React文档上的React State and Lifecycle中,我们有以下声明: 因为this.props和this.state可能是异步更新的,所以不应该依赖它们的值来计算下一个状态。 我的误解在哪里?对我来说,当组件

    • 我有一个名为的组件,还有一个子组件名为。智利组件有一个名为的状态。我需要从AvailabiltyCalendar组件访问该状态并获取该状态值。我该怎么做呢。 可用压路机组件 DatePicker组件

    • 我在我的项目中使用了spring-boot-starter-webflux、ractor-test和spring-boot-starter-test 2.0.0.m7。在我的中有一个,您可以通过方法添加字符串值。还可以询问通过方法添加到列表中的所有值。问题是如何测试?我有,但它似乎不起作用,因为返回的总是0。我知道问题是中的方法,但我不知道原因和如何解决它。有人知道我应该如何创建一个有效的Juni

    • 我正在用回复写一个 HOC。当我要返回类与 HOC 我得到一个警告在控制台说 函数作为React子级无效。如果您返回一个组件而不是< code >,可能会发生这种情况 我将为模式添加click处理程序,使其能够关闭。另外,我将从错误中得到消息,我已经将其作为第二个函数的参数传递给了模态中的show。

    • 我目前正在编写一个discord bot反应角色命令。 一切都很顺利,但我有一个问题。 当我启动机器人并运行创建嵌入的命令时,一切都很好。问题是当我对信息做出反应时,它并没有给我这个角色。这是我的代码: