当前在 reactJS 中使用 bootstrap 轮播的幻灯片数量
current number of slide using bootstrap carousel in reactJS
我正在 reactJS 中创建一个 bootstrap 轮播(图片库),但我在显示确切的索引号时遇到问题(它显示的是当前幻灯片的最后一个索引值。
例如:如果我在第 1-2-3 张幻灯片的第 4 张幻灯片上,那么我的幻灯片编号将为 3(即索引 2),我将单击上一个按钮,然后我当前的幻灯片编号将为第 3,但是myIndex 值将为 4(而不是 3)或图像索引将为活动幻灯片的 3 而不是 2)。
var PhotoAlbum= React.createClass({
getInitialState: function(){
return({
myIndex : 1
})
},
componentWillReceiveProps: function() {
var currentIndex = $('div.active').index() + 1;
console.log(currentIndex)
this.setState({ myIndex: currentIndex })
},
render: function(){
console.log(this.state.myIndex, "index number");
return(
<div>
<div className="modal-body pd_0">
<h4 className="text-center"><b>{this.state.myIndex}/{Photos.length}</b></h4>
<div id="carousel-example-generic" className="carousel slide" data-ride="carousel">
<div className="carousel-inner" role="listbox" >
{
Photos.map(function(x,i){
if(i==0){
return(
<div className="item active">
<img src={x} className="img-responsive"/>
</div>
)
}else{
return(
<div className="item">
<img src={x} className="img-responsive"/>
</div>
)
}
})
}
</div>
<a className="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span className="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span className="sr-only">Previous</span>
</a>
<a className="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span className="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span className="sr-only">Next</span>
</a>
</div>
</div>
</div>
)
}
})
在给定的示例中,我在 componentDidMount
中尝试了相同的操作,但 this.setState
不是那里的函数。
请在这里帮助我获得正确的幻灯片编号并在我的浏览器上更新它。
谢谢
对于给定的代码,我根据需要创建了模态框。请检查给定的示例:
var PhotoAlbumModal= React.createClass({
getInitialState: function(){
return ({
myPhotoAlbum: this.props.photoAlbum,
myIndex: 1
})
},
componentWillReceiveProps: function(newProps) {
this.setState({ myPhotoAlbum: newProps.photoAlbum })
},
componentDidMount: function() {
this.albumController();
},
albumController: function(){
$('.carousel').carousel({ })
.on('slid.bs.carousel', function () {
var curSlide = $('div.item.active');
myIndexValue= curSlide.index()+1;
this.setState({ myIndex: myIndexValue })
}.bind(this));
},
render: function(){
var itemClass;
var myAlbum = Object.keys(this.state.myPhotoAlbum).map(function(x,i){
var image=x
if(i == 0){
itemClass="item active";
}
else{
itemClass="item";
}
return(
<div className={itemClass} key={i}>
<img src={image} className="img-responsive"/>
</div>
)
},this)
return(
<div>
<div className="modal-body pd_0">
<h4 className="text-center photo_album_count">{this.state.myIndex}/
{this.state.myPhotoAlbum.length}</h4>
<div id="carousel-example-generic" className="carousel slide" data-interval="false">
<div className="carousel-inner center-album" role="listbox">
{myAlbum}
</div>
{this.state.myPhotoAlbum.length>1 ?
<div>
<a className="left carousel-control control-album" href="#carousel-example-generic"
role="button" data-slide="prev" >
<div className="arrow-control">
<span className="album-prev" aria-hidden="true"></span>
<span className="sr-only">Previous</span>
</div>
</a>
<a className="right carousel-control control-album" href="#carousel-example-generic"
role="button" data-slide="next" >
<div className="arrow-control">
<span className="album-next" aria-hidden="true"></span>
<span className="sr-only">Next</span>
</div>
</a>
</div>
:null}
</div>
</div>
</div>
)
}
});
**给定代码的好处:**如果图像总数为 1,则将没有左右控制,否则会有。
albumcontroller
函数正在 didmount
。
我正在 reactJS 中创建一个 bootstrap 轮播(图片库),但我在显示确切的索引号时遇到问题(它显示的是当前幻灯片的最后一个索引值。
例如:如果我在第 1-2-3 张幻灯片的第 4 张幻灯片上,那么我的幻灯片编号将为 3(即索引 2),我将单击上一个按钮,然后我当前的幻灯片编号将为第 3,但是myIndex 值将为 4(而不是 3)或图像索引将为活动幻灯片的 3 而不是 2)。
var PhotoAlbum= React.createClass({
getInitialState: function(){
return({
myIndex : 1
})
},
componentWillReceiveProps: function() {
var currentIndex = $('div.active').index() + 1;
console.log(currentIndex)
this.setState({ myIndex: currentIndex })
},
render: function(){
console.log(this.state.myIndex, "index number");
return(
<div>
<div className="modal-body pd_0">
<h4 className="text-center"><b>{this.state.myIndex}/{Photos.length}</b></h4>
<div id="carousel-example-generic" className="carousel slide" data-ride="carousel">
<div className="carousel-inner" role="listbox" >
{
Photos.map(function(x,i){
if(i==0){
return(
<div className="item active">
<img src={x} className="img-responsive"/>
</div>
)
}else{
return(
<div className="item">
<img src={x} className="img-responsive"/>
</div>
)
}
})
}
</div>
<a className="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span className="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span className="sr-only">Previous</span>
</a>
<a className="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span className="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span className="sr-only">Next</span>
</a>
</div>
</div>
</div>
)
}
})
在给定的示例中,我在 componentDidMount
中尝试了相同的操作,但 this.setState
不是那里的函数。
请在这里帮助我获得正确的幻灯片编号并在我的浏览器上更新它。
谢谢
对于给定的代码,我根据需要创建了模态框。请检查给定的示例:
var PhotoAlbumModal= React.createClass({
getInitialState: function(){
return ({
myPhotoAlbum: this.props.photoAlbum,
myIndex: 1
})
},
componentWillReceiveProps: function(newProps) {
this.setState({ myPhotoAlbum: newProps.photoAlbum })
},
componentDidMount: function() {
this.albumController();
},
albumController: function(){
$('.carousel').carousel({ })
.on('slid.bs.carousel', function () {
var curSlide = $('div.item.active');
myIndexValue= curSlide.index()+1;
this.setState({ myIndex: myIndexValue })
}.bind(this));
},
render: function(){
var itemClass;
var myAlbum = Object.keys(this.state.myPhotoAlbum).map(function(x,i){
var image=x
if(i == 0){
itemClass="item active";
}
else{
itemClass="item";
}
return(
<div className={itemClass} key={i}>
<img src={image} className="img-responsive"/>
</div>
)
},this)
return(
<div>
<div className="modal-body pd_0">
<h4 className="text-center photo_album_count">{this.state.myIndex}/
{this.state.myPhotoAlbum.length}</h4>
<div id="carousel-example-generic" className="carousel slide" data-interval="false">
<div className="carousel-inner center-album" role="listbox">
{myAlbum}
</div>
{this.state.myPhotoAlbum.length>1 ?
<div>
<a className="left carousel-control control-album" href="#carousel-example-generic"
role="button" data-slide="prev" >
<div className="arrow-control">
<span className="album-prev" aria-hidden="true"></span>
<span className="sr-only">Previous</span>
</div>
</a>
<a className="right carousel-control control-album" href="#carousel-example-generic"
role="button" data-slide="next" >
<div className="arrow-control">
<span className="album-next" aria-hidden="true"></span>
<span className="sr-only">Next</span>
</div>
</a>
</div>
:null}
</div>
</div>
</div>
)
}
});
**给定代码的好处:**如果图像总数为 1,则将没有左右控制,否则会有。
albumcontroller
函数正在 didmount
。