代码之家  ›  专栏  ›  技术社区  ›  jbuddy_13

为什么道具中有道具。functionName有时只需要被调用?

  •  0
  • jbuddy_13  · 技术社区  · 3 年前

    在react中,特别是参考hook/functional范式,您需要在什么时候使用 props.functionName ? 据我所知,如果函数的名称相同,您可以省略以下道具:

    父母亲js

    ...
    <Child functionName={functionName}/>
    ...
    

    小孩js

    ...
    functionName();
    ...
    

    但是,如果名称发生变化,则必须按如下方式引用道具:

    父母亲js

    ...
    <Child otherName={functionName}/>
    ...
    

    小孩js

    ...
    props.otherName();
    ...
    

    我说得对吗?如果是这样,为什么要使用第二种设计模式?(也许只是为了说明函数来自父级,而不是在子级定义的。或者可能是其他原因?)

    2 回复  |  直到 3 年前
        1
  •  0
  •   Quentin    3 年前

    不可以。您使用的名称完全取决于子组件如何处理传递的道具。父组件如何确定要传递的值完全无关。

    如果道具放在一个名为 props 然后需要通过变量中的对象存储访问它们。

    const Child = (props) => {
        props.functionName();
        ...
    }
    

    如果第一个论点是 destructured ,则每个属性都存储在自己的变量中。

    const Child = ({functionName}) => {
        functionName();
        ...
    }
    

    如果将该值复制到组件内的另一个变量,则也可以使用该值复制到的变量。

    const Child = (props) => {
        const functionName = props.functionName();
        functionName();
        ...
    }
    
        2
  •  0
  •   Iyadchafroud    3 年前

    错,这是在破坏React中的道具;

    解构 是从存储在(可能是嵌套的)对象和数组中的数据中提取多个值的方便方法

    道具 是一个对象,所以我们可以使用解构

    通过解构,可以以更易读的格式使用道具,并且不需要为每个属性使用道具。

    ` ;

          const child =(props)=>{
        // you need to write props.functionName
        props.functionName();
    const thisName = props.name
        };
      const child =({functionName,name})=>{
        // you dont need to write *props.*
       functionName();
    const thisName = name
    
        };`
    
        3
  •  -2
  •   CertainPerformance    3 年前

    当与子组件交互时,父组件中的某些内容所使用的名称可能与子组件所需的道具不同。

    例如,假设你的家长部分与学校有关,你有:

    const [studentId, setStudentId] = useState();
    const [parentId, setParentId] = useState();
    

    但你也有一个孩子的组成部分,希望学生 id 道具然后,传下去 studentId 要做到这一点,你应该:

    <Student id={studentId} />
    

    在这个子组件中,你可以通过 props.id .

    如果是这样,为什么要使用第二种设计模式?

    有时,就像我刚才描述的情况一样,子组件的设计并没有考虑到父组件中使用的所有标识符——这是完全合理的,这就是为什么编程中有这么多东西是模块化的(并且是可调整的和有用的)。