javascript - React JS无限滑块问题
问题描述
我正在尝试构建一个无限滑块。
当我滚动滑块时,最后一个克隆项目按预期显示,但滑块停止。我想继续无限滚动,这个滑块应该总是有另一个项目可以滚动到。
这是我的构造函数中的“rails”数组,它们是导入的组件:
import MusicRail from '../../components/MusicRail';
import GamesRail from '../../components/GamesRail';
import MoviesRail from '../../components/MoviesRail';
constructor(props) {
super(props);
this.state = {
indexX: 0,
indexY: 1
}
this.rails = [
MusicRail,
GamesRail,
MoviesRail
]
}
然后我在克隆第一个和最后一个项目以附加到数组的第一个和最后一个位置后更新导轨。
let rails = this.rails;
let firstObject = this.rails[0];
let lastObject = this.rails.slice(-1)[0];
this.rails = [lastObject, ...rails, firstObject];
这是我的 onMoveVertical 函数 - 方向绑定到下面的另一个函数 setupKeys:
onMoveVertical(direction) {
if(!this.state.active || this.state.profileMenu.active) return;
const moveLocal = (direction) => {
let {indexY} = this.state;
indexY = (direction === 'UP') ? (indexY === 0) ? 0 : indexY - 1 : (indexY < this.rails.length-1 ) ? indexY + 1 : this.rails.length-1;
this.setState({
indexY,
});
};
const activeComponent = this[`${this.className}-${this.state.indexY}`];
if(activeComponent && activeComponent.onMoveVertical) {
const canMove = activeComponent.onMoveVertical(direction);
if(!canMove) {
moveLocal(direction);
}
} else {
moveLocal(direction);
}
}
设置键功能:
setupKeys() {
key('up', this.keyScope, this.onMoveVertical.bind(this, 'UP'));
key('down', this.keyScope, this.onMoveVertical.bind(this, 'DOWN'));
}
解决方案
尝试将 this.rails 移入状态。当属性仅在此/对象上时,更新它的值不会导致调用渲染,因此视图不会更新。
推荐阅读
- javascript - 如何查看 RecyclerView 项目逆序最新项目在顶部
- c# - 如何在 C# 控制台应用程序中使用扩展 ascii 字符
- spring-boot - Spring Boot、H2 和 Flyway:使用两个版本的数据库运行集成测试
- maven - 如何将 Maven 项目模块中的所有依赖项复制到目录中?
- jquery - 控制器将微软图表作为图像返回给 AJAX 调用
- c# - QuickFixN 不发送交易时段的登录信息
- c# - 在 C#.Net 中将文件上传到 zoho 联系人
- batch-file - 只允许数组窗口批处理文件中的唯一条目
- sqlite - 如何使用 FTS3 优化加入(在文本上)
- kubernetes - kube-state-metrics - 无法列出 *v1.Pod: text/html 的序列化程序;charset=utf-8 不存在