reactjs - 通过 .map() React Native 绑定函数
问题描述
所以我在结合 .map() 和函数绑定的概念时遇到了一些麻烦。我使用 .map() 的方式与 ngFor 在 Angular 中的使用方式相同,以便在页面上为用户帐户中的每个项目放置一个自定义按钮组件。
这是一些示例代码:
class MyButton extends Component {
constructor(props) {
super();
this.state = {
progress: 0
}
}
render() {
return(
<TouchableWithoutFeedback onPress={this.pressFunction}>
(...more code inside)
</TouchableWithoutFeedback>
)
}
pressFunction = () => {
(animate progress from 0 to 1 for some animation)
}
}
/////////////////////////////////////////////////////////////////
class Parent extends Component {
render() {
return(
{
this.props.data.array.map(obj => {
return(
<View style={someStyle}>
<MyButton data={obj} />
</View>
)
})
}
)
}
}
所以在父组件中,多个 MyButton 被正确渲染,每个都根据从数组中传递的对象。但是,当按下任何按钮时,所有 MyButtons 的所有 pressFunctions 都会触发。
我的问题是我猜,如何确保每个 MyButton 的每个 pressFunction 仅绑定到 MyButton 的特定实例?我在这里的范围有问题。
我的理解是
functionName = () => {}
应该正确地将函数绑定到实例,但我也尝试了旧方法,结果相同。
解决方案
我通过在映射到 MyButton 的每个对象上创建一个动态 ref 来解决这个问题,使用数组中每个 obj 的唯一属性:
this.props.data.array.map(obj => {
return(
<View style={someStyle}>
<MyButton ref={obj.name} data={obj} />
</View>
)
})
仍然不知道为什么我的它没有唯一地绑定没有 ref
推荐阅读
- c# - ASP.NET 网站不允许 Axios PUT 访问(不允许 405 方法)
- search - Typo3 10 - Indexed_Search 使用 GET 而不是 POST
- java - 如何更改此 Spring Batch @Scheduled() 注释以指定执行时间和时间?
- postgresql - 如何通过添加更多索引来优化以下查询?
- javascript - 使用超链接(文档片段)作为文本字符串创建列表
- angular - 我尝试将 swiperjs 添加到我的 angular 11 项目中,但显示“swiper”不是已知元素:
- react-native - 如何在 react-native-picker/picker 中使用图标作为标签
- javascript - 如何使用javascript / Jquery根据父DIV大小调整两个视频元素的大小?
- python - 调用全局命名空间中已经可用的函数的大多数 Pythonic 方式
- reinforcement-learning - 与强化学习一起使用时将 Drake 的模拟器设置为固定集成的最佳实践?