reactjs - 有没有一种有效的方法在 React Native 的无状态/功能组件中创建 onPress 事件处理程序?
问题描述
我有一个无状态/功能组件,它获取具有两个属性的对象数组,即标题和onPress()作为道具。
现在对于Button组件的 onPress 事件,我想调用这个对象的 onPress 函数以及一个动作创建者(它也作为道具传递给这个组件)。
有没有办法只创建一个 onPress 事件处理程序实例来调用这两个函数(按钮对象的 onPress 函数和动作创建者)?
下面是一个片段代码:
buttons.map(button =>
<Button
title={button.title}
onPress={ // call button.onPress and action creator using event handler }
/>
)
提出这个问题的原因是因为每次该组件重新渲染事件处理程序时也会再次创建,这可能会导致性能问题。
解决方案
不要分离道具,只需将按钮本身与动作创建者一起传递:
buttons.map(button =>
<Button
button={button}
action={action}
/>
)
并在您的 Button 组件中创建一个 handlePress 函数并在那里调用 press。
const Button = ( {button, action }) => {
const handlePress = () => {
button.onPress();
action();
}
return (
<div>
<button onPress={handlePress}>{button.title}</button>
</div>
)
};
我不知道 React Native,但我认为 React 本身没有太大区别。
推荐阅读
- javascript - 将数组结果添加到字符串
- c# - xamarin.forms 中开启和关闭 gps 的事件
- reactjs - 操作界面错误“类型不存在属性”
- python - 通过python动态跳过excel中真实标题上方存在的所有不需要的行
- javascript - 如何将值从 django html 发送到 django 视图
- ruby - Ruby 无法启动 - 未初始化常量 Dry::Validation::Contract
- html - 引导剂量工作虽然它已安装
- refactoring - ESLINT 错误:迭代器/生成器需要 regenerator-runtime,我应该如何解决这个问题?
- sql - SQL - 摆脱嵌套聚合选择
- php - Laravel 7 非法偏移类型