Jquery 如何让React.js和Bootstrap 4模式旋转木马始终在open上显示第一个图像
我将React.js与bootstrap4modal/carousel一起使用,我希望在打开/重新打开modal时始终显示第一个图像。现在,第一个图像在第一次打开模式时显示,但如果用户滚动到另一个图像,然后关闭并重新打开模式,则会显示用户查看的最后一个图像,而不总是第一个图像。我尝试在我的componentDidMount中使用jquery来强制使用旋转木马索引,但它不起作用 以下是我预期行为的示例场景…Jquery 如何让React.js和Bootstrap 4模式旋转木马始终在open上显示第一个图像,jquery,reactjs,twitter-bootstrap,bootstrap-modal,carousel,Jquery,Reactjs,Twitter Bootstrap,Bootstrap Modal,Carousel,我将React.js与bootstrap4modal/carousel一起使用,我希望在打开/重新打开modal时始终显示第一个图像。现在,第一个图像在第一次打开模式时显示,但如果用户滚动到另一个图像,然后关闭并重新打开模式,则会显示用户查看的最后一个图像,而不总是第一个图像。我尝试在我的componentDidMount中使用jquery来强制使用旋转木马索引,但它不起作用 以下是我预期行为的示例场景… 1.打开模式(显示第一幅图像) 2.旋转传送到第二个项目 3.关闭模式 4.打开模式(显示
1.打开模式(显示第一幅图像)
2.旋转传送到第二个项目
3.关闭模式
4.打开模式(显示第一幅图像) 这是一个 index.js
import React,{Component}来自'React';
从'react dom'导入{render};
导入“/style.scss”;
从“jquery”导入美元;
类应用程序扩展组件{
构造函数(){
超级();
}
componentDidMount(){
//我在展会活动中尝试始终从索引0开始旋转
//$('.largeModal').on('show.bs.modal',function(){
//log('show.bs.modal event');
//$('.carousel')。carousel(0);
// });
//$('.largeModal').on('show.bs.modal',function(){
//log('show.bs.modal event');
//$(#myCarousel')。carousel(0);
// });
}
render(){
返回(
使用Bootstrap 4模式和旋转木马进行响应
开放模态
{/*模态*/}
{/*旋转木马*/}
接近
);
}
}
render(,document.getElementById('root'));
style.scss
.img大小{
高度:450px;
宽度:700px;
背景尺寸:封面;
溢出:隐藏;
}
.模态内容{
宽度:700px;
边界:无;
}
.模态体{
填充:0;
}
.carousel控件上一个图标{
背景图像:url(“数据:image/svg+xml;charset=utf8,%3Csvg xmlns=”http://www.w3.org/2000/svg'填充='%23009be1'视图框='0 8'%3E%3Cpath d='M5.25 0l-4 1.5-1.5-2.5-2.5-2.5-1.5-1.5-1.5z'/%3E%3C/svg%3E';
宽度:30px;
高度:48px;
}
.carousel控件下一个图标{
背景图像:url(“数据:image/svg+xml;charset=utf8,%3Csvg xmlns=”http://www.w3.org/2000/svg'填充='%23009be1'视图框='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E';
宽度:30px;
高度:48px;
}
index.html
旋转木马
您需要启用JavaScript才能运行此应用程序。
package.json
{
“名称”:“反应”,
“版本”:“0.0.0”,
“私人”:没错,
“依赖项”:{
“引导”:“^4.4.1”,
“jquery”:“1.9.1-3”,
“节点sass”:“^4.13.1”,
“popper.js”:“^1.16.0”,
“反应”:“^16.9.0”,
“反应dom”:“^16.9.0”
},
“脚本”:{
“开始”:“反应脚本开始”,
“构建”:“反应脚本构建”,
“测试”:“反应脚本测试--env=jsdom”,
“弹出”:“反应脚本弹出”
},
“依赖性”:{
“反应脚本”:“最新”
}
}
将图像属性存储在对象数组中,如。
并将它们映射到渲染
let arr = [
{
className:'img-size',
src:'https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1350&q=80',
alt:'Third slide'
},
and more like this.
]
//Then map the images in carousel ann it would always show first image first, because it would always render images at runtime.
arr.map(img => {
return(
<img
className={img.className}
src={img.src}
alt={img.alt}
/>
);
})
让arr=[
{
类名:'img-size',
src:'https://images.unsplash.com/photo-1464822759023-fed622ff2c3b?ixlib=rb-1.2.1&ixid=eyjhcbfawqiojeymdd9&auto=format&fit=crop&w=1350&q=80',
alt:“第三张幻灯片”
},
更像这样。
]
//然后在carousel ann中映射图像,它总是首先显示第一个图像,因为它总是在运行时渲染图像。
arr.map(img=>{
返回(
);
})
tl,dr;
应用程序中导入的jQuery与Windows对象中的jQuery不同。因此,您正在使用的.carousel()
方法不会通过引导扩展。通过使用,可以访问“窗口中的一个”对象
const $ = window.$
内置componentDidMount
功能。看吧。或者您可以在jQuery之后导入popper.js和Bootstrap的js,并从
index.html
中删除
标记