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