Reactjs 在React中传递一个道具、多个道具和嵌套组件?

Reactjs 在React中传递一个道具、多个道具和嵌套组件?,reactjs,Reactjs,这是的一部分 在React中思考对我来说是很困难的,因为我看到许多开发人员确实以不同的思维方式进行反应 当我为开发者将要使用的通知组件编写代码时,我突然注意到使用该组件有不同的体验: 传递许多道具,如Bootstrap <Notification title="New Feature" body={message} action={action}/> 问题是,我想当我想扩展组件时,比如说添加3个额外的功能,需

这是的一部分

在React中思考对我来说是很困难的,因为我看到许多开发人员确实以不同的思维方式进行反应

当我为开发者将要使用的
通知
组件编写代码时,我突然注意到使用该组件有不同的体验:

传递许多道具,如
Bootstrap

  <Notification 
        title="New Feature"
        body={message}
        action={action}/>
问题是,我想当我想扩展组件时,比如说添加3个额外的功能,需要3个额外的
道具


我对选择每种方法的原因以及“最佳”的开发人员体验感到困惑。

要回答这个问题,让我们回顾一下给出的所有可能性和一个:

赞成的意见
  • 延迟渲染
  • 易于传递道具和为内部实现注入道具
  • 用于定义传递的组件(合约)的确切用法
欺骗
  • 混乱的

儿童渲染 总之 这在很大程度上取决于组件的使用,通常混合方法适合通过道具传递良好的组件,并为传递
子组件添加一个选项

另一种技术是


为了回答这个问题,让我们回顾一下给出的所有可能性,并回答以下问题:

赞成的意见
  • 延迟渲染
  • 易于传递道具和为内部实现注入道具
  • 用于定义传递的组件(合约)的确切用法
欺骗
  • 混乱的

儿童渲染 总之 这在很大程度上取决于组件的使用,通常混合方法适合通过道具传递良好的组件,并为传递
子组件添加一个选项

另一种技术是


你期望的原因是——需要多少控制。你想拥有这些作品的渲染吗?第一种是指
通知
接收道具并拥有它们的呈现。第二种方法意味着您有3个额外的组件,它们将负责呈现和接收数据。使用哪一个是基于意见的,因为它会因用例而异。您能否显示
操作
消息
的外观,因为depends@DennisVash,消息为
,操作为
。如果要提供细粒度控制,请使用子组件。如果你想把所有的东西都包装起来,你就不需要了。你期望的理由是——需要多少控制。你想拥有这些作品的渲染吗?第一种是指
通知
接收道具并拥有它们的呈现。第二种方法意味着您有3个额外的组件,它们将负责呈现和接收数据。使用哪一个是基于意见的,因为它会因用例而异。您能否显示
操作
消息
的外观,因为depends@DennisVash,消息为
,操作为
。如果要提供细粒度控制,请使用子组件。事实上,我不是把
组件
作为
道具
传递,而是把一个道具传递给家长,然后让孩子们通过
上下文
或传递每个组件的
属性
来使用。我已经重新格式化了这个问题,请再看一看。你应该将对象分散到多个道具上,主要是因为当组件扩展时,它会给你更多的选择。事实上,我不是将
组件作为
道具
传递,但我只是混淆了将一个道具传递给家长,然后让孩子通过
上下文
或传递每个组件的
属性
。我已经重新格式化了这个问题,请再看一看。你应该把这个物体分散到多个道具上,主要是因为当这个部件缩放时,它会给你更多的选择
  const data = {
  title:"",
  subtitle:"",
  message:""
  }
  <Notification data={data}/>
        
   <Notification>
   <Title></Title>
   <Body><Body/>
   <Action><Action>
   </Notification>
import React from "react"
import { Wrapper, Text } from "./Styled"

const Body = ({ message }) => (
    <Wrapper>
        <Text>{message}</Text>
    </Wrapper>
)

export default Body
const c1 = <div>React Element</div>;
const C2 = () => <div>Function Component</div>;
const ObjectProps = ({ component }) => {
  console.log("render object props");
  return component;
};
<ObjectProps component={c1} />
const FunctionComponentProps = ({ FunctionComponent }) => {
  console.log("render function component");
  return <FunctionComponent />;
};
<FunctionComponentProps FunctionComponent={C2} />
const ChildrenRender = ({ children }) => {
  console.log("render function component");
  return children;
};

<ChildrenRender>
  {c1}
  <C2 />
</ChildrenRender>
const ChildrenRender = ({ children }) => {...};
ChildrenRender.InnerComp1 = <SomeComponent .../>
ChildrenRender.InnerComp2 = <SomeComponent2 .../>

<ChildrenRender>
  <ChildrenRender.InnerComp1>{c1}</ChildrenRender.InnerComp1>
  <ChildrenRender.InnerComp2><C2/></ChildrenRender.InnerComp2>
</ChildrenRender>