【发布时间】:2018-04-27 01:31:23
【问题描述】:
看看这支笔:https://codepen.io/segmentationfaulter/pen/XzgJyV
为方便起见,我也在此处粘贴代码。打开上面的笔后,您会看到渲染了一个滑块。向右滚动滑块,点击change slides按钮,你会看到滑块重新渲染了不同的数字,但滑块的滚动位置没有重置。为什么滚动位置没有重置?谢谢
function SliderElement({
elementContent
}) {
return ( <
div className = 'slider-element' > {
elementContent
} < /div>
)
}
class Slider extends React.Component {
render() {
return ( <
div className = 'slider' > {
this.props.sliderContentArray.map(elementContent => < SliderElement elementContent = {
elementContent
}
/>)} <
/div>
)
}
}
class SliderContainer extends React.Component {
constructor() {
super()
this.slidersContent = [
[1, 2, 3, 4, 5, 6, 7, 8],
[9, 10, 11, 12, 13, 14, 15, 16]
]
this.state = {
currentSliderIndex: 0
}
}
switchSlider() {
this.setState((prevState) => {
if (prevState.currentSliderIndex === 0) {
return {
currentSliderIndex: 1
}
} else {
return {
currentSliderIndex: 0
}
}
})
}
render() {
return ( <
div >
<
Slider sliderContentArray = {
this.slidersContent[this.state.currentSliderIndex]
}
/> <
button className = 'slider-switch-button'
onClick = {
this.switchSlider.bind(this)
} >
change slides <
/button> <
/div>
)
}
}
ReactDOM.render( <
SliderContainer / > ,
document.getElementById('root')
);
.slider {
display: flex;
overflow: scroll;
}
.slider-element {
flex-shrink: 0;
display: flex;
justify-content: center;
align-items: center;
width: 20%;
height: 100px;
background: yellow;
}
.slider-element+.slider-element {
margin-left: 10px;
}
.slider-switch-button {
margin-top: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
【问题讨论】:
标签: javascript reactjs