Axios 调用停止转换
Axios call stops a transition
所以我的 axios 调用停止了当前正在进行的转换,如以下视频所示:
https://youtu.be/5BCSvJpoMcs
如何防止 axios 这样做?
那是 nextSlide 函数的代码
const nextSlide = () => {
if (isMoreItems) {
setCarouselPage(carouselPage + 1)
if (carouselPage === recentQuizes.length - 1) {
apiCall(skip, limit).then(data => {
if (data.length > 0) {
setSkip(skip + limit)
setRecentQuizes([...recentQuizes, data])
}
if (data.length < 4) {
setIsMoreItems(false)
}
})
}
}
}
并且 carouselPage 被发送到样式组件,该组件只是将 transform 属性 设置为 translateX carouselPage * -100%
有人知道如何解决这个问题吗?
所以我通过添加一个新的 Wrapper 来修复它,现在它看起来像这样
<Wrapper carouselPage={carouselPage}>
{recentQuizes.length > 0 &&
recentQuizes.map(item => (
<Container key={item[0]._id}>
{item.map(quiz => (
<Tile
key={quiz._id}
name={quiz.name}
author={quiz.author}
views={quiz.views}
/>
))}
</Container>
))}
</Wrapper>
Wrapper 样式是
const Wrapper = styled.div`
height: inherit;
min-width: 100%;
transition: 1s;
transform: ${props =>
props.carouselPage &&
`translateX(-${props.carouselPage * 25}%)`};
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: flex-start;
`
所以我的 axios 调用停止了当前正在进行的转换,如以下视频所示: https://youtu.be/5BCSvJpoMcs
如何防止 axios 这样做? 那是 nextSlide 函数的代码
const nextSlide = () => {
if (isMoreItems) {
setCarouselPage(carouselPage + 1)
if (carouselPage === recentQuizes.length - 1) {
apiCall(skip, limit).then(data => {
if (data.length > 0) {
setSkip(skip + limit)
setRecentQuizes([...recentQuizes, data])
}
if (data.length < 4) {
setIsMoreItems(false)
}
})
}
}
}
并且 carouselPage 被发送到样式组件,该组件只是将 transform 属性 设置为 translateX carouselPage * -100%
有人知道如何解决这个问题吗?
所以我通过添加一个新的 Wrapper 来修复它,现在它看起来像这样
<Wrapper carouselPage={carouselPage}>
{recentQuizes.length > 0 &&
recentQuizes.map(item => (
<Container key={item[0]._id}>
{item.map(quiz => (
<Tile
key={quiz._id}
name={quiz.name}
author={quiz.author}
views={quiz.views}
/>
))}
</Container>
))}
</Wrapper>
Wrapper 样式是
const Wrapper = styled.div`
height: inherit;
min-width: 100%;
transition: 1s;
transform: ${props =>
props.carouselPage &&
`translateX(-${props.carouselPage * 25}%)`};
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: flex-start;
`