在 React Native 应用程序中向传递的 this.props.onPress-函数添加函数
Adding a function to the passed this.props.onPress-function in a React Native app
我已将所有 TouchableOpacity
组件更改为自定义组件,因此我可以为应用程序中的所有按钮/可点击视图添加通用功能。我将新组件命名为 HapticButton
.
所有 HapticButton
组件都将包含 onPress
属性,如下所示:
<HapticButton activeOpacity={1.0} onPress={() => { console.log("button was pressed"); }}>...</HapticButton>
我的 HapticButton-class 看起来像这样:
import React from 'react';
import { TouchableOpacity, Text} from 'react-native';
export default class HapticButton extends React.Component {
render() {
return (
<TouchableOpacity activeOpacity={this.props.activeOpacity} style={[this.props.style]} onPress={this.props.onPress}>
{this.props.children}
</TouchableOpacity>
);
}
vibrate() {
// Code that makes a haptic feedback when called
}
};
我成功地将 onPress
-属性 传递给我的新 HapticButton
-组件,但是如何将 this.props.onPress
-[=31= 合并在一起] 与 vibrate()
函数,以便每次按下 HapticButton
时都会调用它?
您可以轻松地将两个函数调用合并在一起,如下所示
<TouchableOpacity onPress={() => {
this.props.onPress();
this.vibrate();
}}>
或者你可以在vibrate
函数中直接调用this.props.onPress()
<TouchableOpacity onPress={this.vibrate} ...
vibrate() {
this.props.onPress();
// Code that makes a haptic feedback when called
}
根据您的用例,我分享的两种方式之间没有太大差异,在可读性方面我认为第一种方式更好
我已将所有 TouchableOpacity
组件更改为自定义组件,因此我可以为应用程序中的所有按钮/可点击视图添加通用功能。我将新组件命名为 HapticButton
.
所有 HapticButton
组件都将包含 onPress
属性,如下所示:
<HapticButton activeOpacity={1.0} onPress={() => { console.log("button was pressed"); }}>...</HapticButton>
我的 HapticButton-class 看起来像这样:
import React from 'react';
import { TouchableOpacity, Text} from 'react-native';
export default class HapticButton extends React.Component {
render() {
return (
<TouchableOpacity activeOpacity={this.props.activeOpacity} style={[this.props.style]} onPress={this.props.onPress}>
{this.props.children}
</TouchableOpacity>
);
}
vibrate() {
// Code that makes a haptic feedback when called
}
};
我成功地将 onPress
-属性 传递给我的新 HapticButton
-组件,但是如何将 this.props.onPress
-[=31= 合并在一起] 与 vibrate()
函数,以便每次按下 HapticButton
时都会调用它?
您可以轻松地将两个函数调用合并在一起,如下所示
<TouchableOpacity onPress={() => {
this.props.onPress();
this.vibrate();
}}>
或者你可以在vibrate
函数中直接调用this.props.onPress()
<TouchableOpacity onPress={this.vibrate} ...
vibrate() {
this.props.onPress();
// Code that makes a haptic feedback when called
}
根据您的用例,我分享的两种方式之间没有太大差异,在可读性方面我认为第一种方式更好