Eine Button-Komponente besteht im Allgemeinen aus dem Text-Element, das mit einem TouchableHighlight (oder einem anderen touchable) umschlossen ist. Ich versuche, eine Button-Komponente zu erstellen, die mit styled-components formatiert ist, habe aber Probleme, meinen Stil dynamisch auf Requisiten reagieren zu lassen.Dynamisch formatierte Schaltfläche in Reactive Native mit gestylten Komponenten
Button-Komponente
Unten habe ich eine Button-Komponente ähnlich der in den Stil-Komponenten-docs gefunden Adapting based on props Beispiel erstellt.
import React from 'react';
import { Text, TouchableHighlight } from 'react-native';
import styled from 'styled-components/native';
const colors = {
accent: '#911',
highlight: '#D22',
contrast: '#FFF',
}
const Label = styled.Text`
color: ${props => !props.outline ? colors.contrast : colors.accent};
font-weight: 700;
align-self: center;
padding: 10px;
`
const ButtonContainer = styled.TouchableHighlight`
background-color: ${props => props.outline ? colors.contrast : colors.accent};
width: 80%;
margin-top: 5px;
border-color: ${colors.accent};
border-width: 2px;
`
const Button = (props) => {
return (
<ButtonContainer
onPress={props.onPress}
underlayColor={colors.highlight}
>
<Label>
{props.children}
</Label>
</ButtonContainer>
);
};
export default Button;
Knopf Nutzungs
Nach dem Import, ich bin auf die Schaltfläche wie folgt aus ...
<Button
outline
onPress={() => console.log('pressed')}>
Press Me!
</Button>
Erwartetes Ergebnis
Und so würde ich meine Taste erwarten so aussehen ...
Tatsächliches Ergebnis
Aber stattdessen sieht es so aus ...
Was ich bisher
zu beheben gemacht, wenn ich react-devtools inspect verwenden, kann ich sehen, dass die outline
prop wird an die Komponente Button
weitergegeben.
Aber die Stütze ist nicht auf irgendetwas davon Kinder
Der Passed Props Teil des docs Zustand „Stil-Komponenten weitergeben all ihre Requisiten“ überliefert, aber Ich denke nicht den ganzen Weg hinunter?
Meine Frage
Was muss ich ändern, so dass ich meine dynamisch Knopf auf seine Requisiten basierten Stil kann?
Danke Satya! Das alles macht vollkommen Sinn. Danke, dass du eine so großartige Erklärung geschrieben hast, und natürlich funktioniert es genau so, wie du es beschrieben hast. –
Um zu @ satya164's Antwort hinzuzufügen, können Sie sofort alle Requisiten erben: ''. Auf diese Weise müssen Sie nicht jede neue Requisite manuell hinzufügen, die Sie weitergeben möchten. –