reactjs - 在 React 中,将文本作为道具传递给组件是好还是坏?
问题描述
例如,假设您有一个要在应用程序中重复使用多次的组件。
因此,您将其设置为接收不同/独特的文本、多个 h2 和多个 ps 作为道具。
const Sets = ({ oneH, twoH, threeH, oneP, twoP, threeP }) => {
return (
<div className="sets">
<div>
<h3>{oneH}</h3>
<p>{oneP}</p>
</div>
<div>
<h3>{twoH}</h3>
<p>{twoP}</p>
</div>
<div>
<h3>{threeH}</h3>
<p>{threeP}</p>
</div>
</div>
);
};
然后你这样使用它:
<Sets
oneH="Blue Skies"
twoH="Good Times"
threeH="Hotels, Etc."
oneP="Lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti, veniam voluptatibus."
twoP="Different lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti, veniam voluptatibus."
threeP="Unique lorem ipsum dolor sit amet consectetur adipisicing elit. Corrupti, veniam voluptatibus."
/>
它的使用是否有太多的文字,是否太笨重?有没有更好的方法?
解决方案
尝试进一步分解它,并将文本集放入 JS 数组中。
为了使源文本更具可读性:
const texts = [
{
h:"abc",
p:"123"
},
{
...
}
]
然后将其传递给您的Sets
元素:
<Sets texts={texts} />
然后在 中Sets
,迭代texts
:
const Sets = ({ texts }) => {
return (
<div className="sets">
{texts.map(({h,p}) => (
<div>
<h3>{h}</h3>
<p>{p}</p>
</div>
)
</div>
);
};
这使您可以在一个地方真正轻松地编辑源文本;它甚至可以从外部源动态加载。
如您所见,单个texts
道具使其更容易传递。
最后,迭代允许您不必输入每个道具!
推荐阅读
- ansible - Ansible 从输出中获取特定值
- java - 如何在 Android 中从其 unicode 打印非英文文本
- swift - 如何解决错误:“使用未解析的标识符‘ImageStore’”
- android - 在构建到 android 时,它将 network_security_config.xml 放在 Xamarin Forms 应用程序中的哪个目录
- json - Optimise JSON to Typescript Map
- r - 不能在 r 的 mutate_if 函数中使用 is.na() 函数
- c++ - How could I assign values to c++ vector
- java - SpringBoot JPA Repository - 获取所选字段显示错误“找不到列”
- python - 我试图将 pdf 转换为图像,但我不断收到这个错误 wand.exceptions.DelegateError
- java - 如何计算购物车 JList 中的价格总和?