Ich möchte den Stil einer Schaltfläche in meiner App ändern, wenn es gedrückt wird. Was ist der beste Weg, dies zu tun?Ändern Sie die Schaltfläche Stil beim Drücken in Reagieren Native
Antwort
Verwendung TouchableHighlight
.
Hier ein Beispiel:
'use strict';
import React, {
Component,
StyleSheet,
PropTypes,
View,
Text,
TouchableHighlight,
} from 'react-native';
export default class Home extends Component {
constructor(props) {
super(props);
this.state = { pressStatus: false };
}
_onHideUnderlay(){
this.setState({ pressStatus: false });
}
_onShowUnderlay(){
this.setState({ pressStatus: true });
}
render(){
return (
<View style={styles.container}>
<TouchableHighlight
activeOpacity={1}
style={ this.state.pressStatus ? styles.buttonPress : styles.button }
onHideUnderlay={this._onHideUnderlay.bind(this)}
onShowUnderlay={this._onShowUnderlay.bind(this)}
>
<Text style={ this.state.pressStatus ? styles.welcomePress : styles.welcome }>{this.props.text}</Text>
</TouchableHighlight>
</View>
)
}
}
Home.propTypes = {
text: PropTypes.string.isRequired,
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
color: '#000066'
},
welcomePress: {
fontSize: 20,
textAlign: 'center',
margin: 10,
color: '#ffffff'
},
button: {
borderColor: '#000066',
borderWidth: 1,
borderRadius: 10,
},
buttonPress: {
borderColor: '#000066',
backgroundColor: '#000066',
borderWidth: 1,
borderRadius: 10,
},
});
Dies ist wirklich hilfreich! Und 'onHideUnderlay' &' onShowUnderlay' Methoden sind kein Konflikt mit 'onPress'. Das bringt mich ein bisschen durcheinander. –
Nur ein Hinweis, dass '
Wusste nicht über 'onHideUnderlay' &' onShowUnderlay'! Googelte für immer, um herauszufinden, wie man so etwas erreicht. Vielen Dank! – gregblass
Verwendung so etwas wie die:
class A extends React.Component {
constructor(props){
super(props);
this.state = {
onClicked: false
}
this.handlerButtonOnClick = this.handlerButtonOnClick.bind(this);
}
handlerButtonOnClick(){
this.setState({
onClicked: true
});
}
render() {
var _style;
if (this.state.onClicked){ // clicked button style
_style = {
color: "red"
}
}
else{ // default button style
_style = {
color: "blue"
}
}
return (
<div>
<button
onClick={this.handlerButtonOnClick}
style={_style}>Press me !</button>
</div>
);
}
}
Wenn Sie ein externes CSS verwenden, können Sie Klassennamen anstelle von Stil-Eigenschaft verwenden:
render() {
var _class = "button";
var _class.concat(this.state.onClicked ? "-pressed" : "-normal") ;
return (
<div>
<button
onClick={this.handlerButtonOnClick}
className={_class}>Press me !</button>
</div>
);
}
Es spielt keine Rolle, wie bewirbt man Dein CSS. Behalten Sie die Methode "handlerButtonOnClick" im Auge.
Wenn sich der Status ändert, wird die Komponente erneut gerendert (die Methode "render" wird erneut aufgerufen).
Viel Glück;)
react-native hat keine Schaltfläche. Es verwendet touchableHighlight, touchableNativeFeedback unter anderem. – Nico
das Problem ist nicht über react-native oder nicht ... das Problem ist zu verstehen, wie & wenn reagieren Stile auf Komponente anwenden. Der Ablauf ist immer der gleiche: handleEvent -> Handler -> setState -> render. Meine Antwort ist über diesen Fluss, nicht über Reaktion-native –
Dies ist Besart Hoxhaj ‚s Antwort in ES6. Wenn ich das beantworte, ist "Native react" 0,34.
import React from 'react';
import {
TouchableHighlight,
Text,
Alert,
StyleSheet
} from 'react-native';
export default class TouchableButton extends React.Component {
constructor(props) {
super(props);
this.state = {
pressed: false
}
}
render() {
return (
<TouchableHighlight onPress={
()=> {
// Alert.alert(
// `You clicked this button`,
// 'Hello World!',
// [
// {text: 'Ask me later', onPress:() => console.log('Ask me later pressed')},
// {text: 'Cancel', onPress:() => console.log('Cancel Pressed'), style: 'cancel'},
// {text: 'OK', onPress:() => console.log('OK Pressed')},
// ]
//)
}
} style={[styles.button, this.state.pressed ? {backgroundColor: 'green'} : {}]}
onHideUnderlay={()=>{this.setState({pressed: false})}}
onShowUnderlay={()=>{this.setState({pressed: true})}}>
<Text>Button</Text>
</TouchableHighlight>
);
}
}
const styles = StyleSheet.create({
button: {
padding: 10,
borderColor: 'blue',
borderWidth: 1,
borderRadius: 5
},
});
die Stütze Verwendung:
underlayColor
<TouchableHighlight style={styles.btn} underlayColor={'gray'} />
https://facebook.github.io/react-native/docs/touchablehighlight.html
'UnderlayColor' wird mit einer leichten Opazität angezeigt. Wenn Sie "activeOpacity" auf 0 setzen, werden alle Stile, die auf den nicht gedrückten Zustand angewendet wurden, vollständig ignoriert. –
- 1. Deaktivieren Sie eine bestimmte Schaltfläche beim Klick in reagieren native
- 2. Ändern reagieren Native Cursorfarbe
- 3. benutzerdefinierte Schaltfläche: Stil ändern, wenn sie gedrückt
- 4. , wie Platzhalter ändern textsize in reagieren-native
- 5. Ändern Schaltfläche Stil in Universal Windows Platform
- 6. Reagieren Native Android & Genymotion
- 7. Reagieren Native Anpassen TabBarIOS Style
- 8. Reagieren Native - Fehler beim Dritten Bibliothek importieren
- 9. Wählen Sie die Schaltfläche, während Sie die Eingabetaste drücken
- 10. [Native/Android reagieren]: Wie wird MainActivity beim Drücken der Zurück-Taste zerstört?
- 11. Native reagieren - die Navigationsleiste ausblenden
- 12. -Layout eine Schaltfläche von Super der Unterseite in reagieren-native
- 13. Textauswahl reagieren-native
- 14. Native onStartShouldSetResponder und onResponderRelease reagieren?
- 15. reagieren native programmatisch öffnen DrawerLayoutAndroid
- 16. wie man den Stil der Schaltfläche beim Klicken ändern und klicken Sie auf andere Schaltfläche sollte es auf Standard ändern
- 17. Reagieren + Reagieren Native Starter-Kit
- 18. Ändern Sie die Ansicht im Navigator in React Native
- 19. meine Schaltfläche Stil wie die Alertdialog Schaltfläche Stil machen
- 20. Native reagieren: Wie animieren Sie die Rotation eines Bildes?
- 21. Klicken Sie auf die Schaltfläche beim Drücken der Eingabetaste, wenn Sie ein Textfeld in C#
- 22. Ändern der Schaltfläche Stil funktioniert nicht
- 23. Ändern Sie den Schlüsselwert beim Klicken auf die Schaltfläche
- 24. So ändern Sie die anfängliche Route des Navigators nach der Anmeldung reagieren native
- 25. Wie Bootstrap-Stil in Meteor-Reagieren verwenden?
- 26. Schließen Sie die Tastatur beim Drücken der Taste in der Reaktion-native
- 27. reagieren-native: wie die Standard-Stil in einer Komponente definiert außer Kraft zu setzen
- 28. Wie reagieren native funktioniert?
- 29. Reagieren Native Android-Abstürze beim Debuggen in Chrome
- 30. Native ART-Bibliotheksdokumentation reagieren
Haben Sie es ändern müssen, während es nur gedrückt wird, und ändern Sie zurück, wenn der Benutzer nicht gedrückt wird? Oder müssen Sie es ändern, wenn es berührt wird, und den geänderten Zustand beibehalten, nachdem die Berührung gestoppt wurde? –
Um zurück zu wechseln, wenn der Benutzer sie nicht drückt. – domi91c