javascript - 如何使用 React 和 Redux 保持我的可迭代值循环?
问题描述
每次单击按钮时,参数始终是 {i} 的最后一个值(在本例中为 0),我需要将普通值传递给 Redux 操作。
当我在我的 DIV 工作中打印时。
class MYCLASS extends React.Component {
constructor(props){
super(props);
}
render() {
var level = [];
for (var i = 10; i > 0; i--) {
level.push(
<div>
<div>{i}</div>
<button className='up' onClick={()=>this.props.callUp({i})}>HEREEE!!</button>
<button className='down' onClick={()=>this.props.callDown({i})}>HEREEE!!</button>
</div>
);
}
return level
}
}
const mapDispatchToProps = (dispatch) => ({
callUp: (i) => dispatch(callUp(i)),
callDown: (i) => dispatch(callDown(i)),
})
解决方案
当您遍历循环时,您可以将 的值存储i
到变量中。每次遍历循环时,都会创建该变量的新实例。然后你可以将该变量传递给onClick
处理程序。它的当前值将被使用并存储在数组的内存中。
如果你不这样做,它只会使用最终值i
请参阅代码沙盒以供参考:https ://codesandbox.io/s/fancy-waterfall-kw0kb
import React from "react";
class Test extends React.Component {
renderButtons = () => {
var level = [];
for (var i = 10; i > 0; i--) {
const currentLevel = i;
level.push(
<div>
<div>{currentLevel}</div>
<button className="up" onClick={() => this.props.callUp(currentLevel) }>
HEREEE!!
</button>
<button className="down" onClick={() => this.props.callDown(currentLevel) }>
HEREEE!!
</button>
</div>
);
}
return level;
};
render() {
return <div>{this.renderButtons()}</div>;
}
}
export default Test;
const mapDispatchToProps = (dispatch) => ({
callUp: (i) => dispatch(callUp(i)),
callDown: (i) => dispatch(callDown(i)),
})
推荐阅读
- php - 如何在电子邮件中为 api 路由和 laravel 上的 web 路由创建不同的密码重置链接
- r - 带有 invalidateLater() 的简单闪亮应用程序错误地丢弃了持久后台进程
- maven - 将 Kotlin 多平台项目发布到 mavenLocal 时如何设置 artifactId?
- python - 如何从幻灯片中提取的文本生成 xml 或 json?
- javascript - 如何使元素成为浏览器窗口的高度?
- node.js - TypeOrm创建连接方法迁移数据库建表失败
- sql - 仍然为 SQL 数据透视表中的列获取 NULL 值
- vb.net - “system.io.compression.zipfile”的类型初始化程序引发异常错误
- neo4j - Cypher:如何遍历除特定标签之外的任何关系
- html - 为什么 Firefox 不显示我的背景图片?