【发布时间】:2017-05-22 11:10:40
【问题描述】:
我正在构建一个包含主图像和缩略图列表的轮播。
有 prev 和 next 按钮允许用户浏览图像列表。
到目前为止,这是我的代码:
import styles from './carousel.css';
import cn from '../../../utils/classname';
import actions from '../../../actions';
import Magnified from '../../../svg/icons/ui/magnified_glass';
import ArrowRight from '../../../svg/icons/ui/arrow_right';
import ArrowLeft from '../../../svg/icons/ui/arrow_left';
const Carousel = ({ dispatch, selectedCaravan }) =>
<div className={cn(styles.carouselWrap)}>
<div className={cn(styles.carouselFeatWrap)}>
<a href="#" className={cn(styles.carouselExpand)} onClick={() => dispatch({ type: actions.CAROUSEL_EXPAND })}>
<Magnified />
</a>
<ul className={cn(styles.carousel)}>
{selectedCaravan.images && selectedCaravan.images.map((image, i) => {
return <li key={i}>
<img src={image} />
</li>;
})}
</ul>
</div>
<div className={cn(styles.carouselThumbNavWrap)}>
<ul className={cn(styles.carouselThumbnails)}>
{selectedCaravan.images && selectedCaravan.images.map((image, i) => {
return <li key={i} onClick={() => dispatch ({ type: actions.CAROUSE_GO_TO })}>
<img src={image} />
</li>;
})}
</ul>
<div className={cn(styles.carouselNavigation)}>
<a href="#" className={cn(styles.carouselNavPrev)} onClick={() => dispatch({ type: actions.CAROUSEL_PREV })}>
<ArrowLeft />
</a>
<a href="#" className={cn(styles.carouselNavNext)} onClick={() => dispatch({ type: actions.CAROUSEL_NEXT })}>
<ArrowRight />
</a>
</div>
</div>
</div>;
export default Carousel;
我有诸如CAROUSEL_NEXT 和CAROUSEL_PREV 之类的操作。我正在我的 sagas 中监听这些操作,我对此的想法是我需要更新选定的索引并以某种方式将主图像更新为用户选择的任何一个。
到目前为止,我的传奇是这样的:
const carouselPrev = function* (payload) {
const updateSelectedIndex = payload.updateSelectedIndex;
if (updateSelectedIndex) {
return false;
}
yield put({ type: actions.CAROUSEL_PREV, payload: updateSelectedIndex });
};
我不确定当用户选择新图像时如何更新所选索引,以及如何为轮播设置动画或实质上制作轮播幻灯片。
【问题讨论】:
标签: reactjs react-redux redux-saga