reactjs - 在反应中使用箭头函数进行绑定
问题描述
那里是新的。我开始学习 React,但我遇到了一个代码问题——我想不通。我试图在这里找到问题:
https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Functions/Arrow_functions
我执行绑定 - 并将函数发送到另一个组件。
{this.state.array.map((char, index) => <CharComponent style={mystyle} character={char} click={(index) => this.deleteHandler(index)} key={index}></CharComponent>)}
deleteHandler = (index) => {
let copyArray = [...this.state.array];
console.log('copyArray: ' + copyArray);
copyArray.splice(index, 1);
console.log('copyArray: ' + copyArray);
this.setState({ length: copyArray.length, string: copyArray.join(''), array: copyArray });
}
我无法获得索引 - 它告诉我它是一个对象而不是一个数字。
我做了一个绑定 - 我将索引作为参数发送 - 然后在函数中调用它
为什么括号应该是空的?click={(index) => this.deleteHandler(index)
解决方案
只需从 的参数中删除索引click()
,因为当您执行单击时,它会为我们提供一个事件对象,而您实际上传递的是事件对象而不是索引。这就是为什么没有从 map 函数中获取实际索引值的原因。
例如,请参见以下代码:
{this.state.array.map((char, index) => <CharComponent style={mystyle} character={char} click={() => this.deleteHandler(index)} key={index}></CharComponent>)}
对于您的问题,Why should the brackets be empty?
如上所述,当我们执行点击时,我们会Event
返回一个 javascript 对象。
推荐阅读
- loops - 在 Office 脚本中为 Excel Online 递增字母计数器
- reactjs - 如何在 Redux 表单中创建 checkboxGroup
- flutter - 如何在 Flutter 中停止计时器?
- laravel - 如何在 SQL 中更改现有表的列长度?
- python - 转换字典列表长度不一致的熊猫列
- python-3.x - 嵌套 JSON 数据解析
- javascript - 如何在不无休止的重复的情况下合理有效地扩展一个功能
- python - 在 python asyncio 中等待 pubsub 回调
- next.js - 错误:未找到路由器实例。您应该只在应用程序的客户端使用“next/router”
- android - 如何在 Flutter 中修复?执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade > Android 资源链接 fai 时发生故障