javascript - 如何将 Carousel.Item 包装在其他组件中
问题描述
我正在这个react-bootstrap
轮播中工作。当前代码运行良好:
function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<Carousel>
<Carousel.Item>
<img
className="d-block w-100"
src="https://res.cloudinary.com/tpostr/image/upload/v1553865338/paparouna/IMG_7638-01.jpg"
alt="First slide"
/>
</Carousel.Item>
<Carousel.Item>
<img
className="d-block w-100"
src="https://res.cloudinary.com/tpostr/image/upload/v1553865338/paparouna/IMG_7638-01.jpg"
alt="First slide"
/>
</Carousel.Item>
</Carousel>
</div>
);
}
现在我试图分离Carousel.Item
到其他组件,所以我可以使用它而无需重复自己。但图像没有出现:
const CarouselItem = () => (
<Carousel.Item>
<img
className="d-block w-100"
src="https://res.cloudinary.com/tpostr/image/upload/v1553865338/paparouna/IMG_7638-01.jpg"
alt="First slide"
/>
</Carousel.Item>
);
function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<Carousel>
<CarouselItem />
<CarouselItem />
</Carousel>
</div>
);
}
我试过用 包装组件forwardRef
,但没有用。我做错了什么?注意:我需要CarouselItem
成为一个组件/函数才能向它发送道具。
解决方案
当您Carousel.Item
在单独的组件中渲染时,您需要将道具转发给它。
在内部Carousel
将使用React.cloneElement
添加额外的道具Carousel.Item
,当您使用自定义组件时需要转发到Carousel.Item
const CarouselItem = (props) => (
<Carousel.Item {...props}>
<img
className="d-block w-100"
src="https://res.cloudinary.com/tpostr/image/upload/v1553865338/paparouna/IMG_7638-01.jpg"
alt="First slide"
/>
</Carousel.Item>
);
推荐阅读
- android - Android 格式化日期并返回日期为 dd-MMM-yyyy
- azure - 部署 iOS 应用时 Azure AD B2C ApiEndpoint 混淆
- c++ - 创建具有给定尺寸的新位图并填充给定颜色
- c++ - g++ O1 不等于 O0 与所有相关的优化标志
- cookies - 您可以使用 asp.net 核心中间件添加 cookie 来请求吗?
- jquery - 使用 jQuery 更新复选框时,AngularJS 不会刷新
- c# - 验证 JsonSchema 本身。它是正确的 JSON 模式吗?
- xslt - XSLT 中姓氏、名字的缩写
- javascript - Alexa Skill 中的回调
- c# - 如何在 C# 中在整个 Web 应用程序中使用变量