反应本机 TouchableOpacity onPress 问题
React native TouchableOpacity onPress Problems
我有一个简单的图标按钮如下:
class SideIcon extends Component {
render() {
return (
<TouchableOpacity onPress={console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}
它是从以下组件调用的:
export default test = React.createClass({
getInitialState: function() {
return {
isModalOpen: false
}
},
_openModal() {
this.setState({
isModalOpen: true
});
},
_closeModal() {
this.setState({
isModalOpen: false
});
},
render() {
return (
<View style={styles.containerHead} keyboardShouldPersistTaps={true}>
**<SideIcon openModal={this._openModal} closeModal={this._closeModal} />**
<Text style={styles.logoName}>DareMe</Text>
<SideBar isVisible={this.state.isModalOpen} />
</View>
);
}
});
但是 TouchableOpacity
上的 onPress
永远不起作用。我哪里出错了?虽然它在组件加载期间显示控制台语句。
您应该绑定一个调用您的代码的函数。
例如:
<TouchableOpacity onPress={() => console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
更好的方法是给它一个组件函数的引用
class SideIcon extends Component {
handleOnPress = () => {
console.log('puff')
}
render() {
return (
<TouchableOpacity onPress={this.handleOnPress} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}
您应该传递一个粗箭头函数来调用您的代码,而不是传递一个函数。
应该是这样
onPress={() => console.log('puff')}
完整示例是
class SideIcon extends Component {
render() {
return (
<TouchableOpacity onPress={() => console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}
我有一个简单的图标按钮如下:
class SideIcon extends Component {
render() {
return (
<TouchableOpacity onPress={console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}
它是从以下组件调用的:
export default test = React.createClass({
getInitialState: function() {
return {
isModalOpen: false
}
},
_openModal() {
this.setState({
isModalOpen: true
});
},
_closeModal() {
this.setState({
isModalOpen: false
});
},
render() {
return (
<View style={styles.containerHead} keyboardShouldPersistTaps={true}>
**<SideIcon openModal={this._openModal} closeModal={this._closeModal} />**
<Text style={styles.logoName}>DareMe</Text>
<SideBar isVisible={this.state.isModalOpen} />
</View>
);
}
});
但是 TouchableOpacity
上的 onPress
永远不起作用。我哪里出错了?虽然它在组件加载期间显示控制台语句。
您应该绑定一个调用您的代码的函数。
例如:
<TouchableOpacity onPress={() => console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
更好的方法是给它一个组件函数的引用
class SideIcon extends Component {
handleOnPress = () => {
console.log('puff')
}
render() {
return (
<TouchableOpacity onPress={this.handleOnPress} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}
您应该传递一个粗箭头函数来调用您的代码,而不是传递一个函数。 应该是这样
onPress={() => console.log('puff')}
完整示例是
class SideIcon extends Component {
render() {
return (
<TouchableOpacity onPress={() => console.log('puff')} style={styles.burgerButton}>
<Icon name="bars" style={styles.burgerIcon}/>
</TouchableOpacity>
);
}
}