javascript - 将两个孩子作为道具传递给 React 组件
问题描述
我有一个这样的组件
const Component = () => {
return (
<div>
<div className="data1">
{children}
</div>
<div className="data1">
{children2}
</div>
</div>
)
}
我想在“data1”div 中有 Item1 和 Item2,在“data2”div 中有一些其他组件。编写下一个代码我只有 Item1 和 Item2 作为孩子,但我不知道如何传递第二个孩子(例如 Item3 和 Item4)
<Component>
<Item1/>
<Item2/>
</Component>
我必须在应用程序中多次重用组件,因此返回元素的称为 children2 的函数不是一个好主意,因为它们根据我使用组件的位置而有所不同。
解决方案
推荐的方法是为每个孩子创建自定义道具:
const App = () => <Component child1={<Item1 />} child2={<Item2 />} />
const Component = ({child1, child2}) => {
return (
<div>
<div className="data1">
{child1}
</div>
<div className="data1">
{child2}
</div>
</div>
)
}
const Item1 = () => <p>Item 1</p>
const Item2 = () => <p>Item 2</p>
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
推荐阅读
- rcpp - 在 Rcpp 中,如何获取模板返回的字符串和数字
- android - Android - 在发布模式下重建后 Apk 大小非常大
- docker - 带有 Docker LetsEncrypt 的 Nginx 反向代理
- spring - 线程“主”org.springframework.beans.factory.UnsatisfiedDependencyException 中的异常:使用名称创建 bean 时出错
- python - ImportError:我的 Mac 上没有名为 networkx 的模块,与 Python 版本冲突
- android - 设置超时并完成 ActivityforResult 活动
- c++ - 如何仅针对一个 EXPECT_CALL 覆盖默认的 ON_CALL 操作并稍后返回默认操作
- c++ - 为什么我不能使用 min 和 max 作为变量名?
- python-3.x - 为什么变量显示为未定义?
- javascript - 使用 Node.js 验证电子邮件地址