Ich muss ein Hamburger-Menü/Standort-Symbol in der Symbolleiste ausblenden, während der Anmeldebildschirm aktiv ist. Eine Option, von der ich dachte, dass sie funktioniert, ist, dass die Symbole standardmäßig auf eine leere Zeichenfolge gesetzt werden. Und verwenden Sie den EventEmitter in der Funktion für den erfolgreichen Rückruf in meiner Login.js & Logout.js, und hören Sie danach in meiner Toolbar-Komponente danach. Senden eines Bool zum Anzeigen/Verbergen. Ich bin mir nicht sicher, ob es eine bessere Möglichkeit gibt, dies zu tun, also bin ich auf der Suche nach Vorschlägen. Die Emit/Listen-Ereignisse funktionieren wie erwartet. Das Problem ist, wie ich eine Variable verwende, um die leere Zeichenfolge oder das benannte Symbol anzuwenden.wie man Symbole in einer reaktiven nativen Symbolleiste anzeigt/versteckt
Hier ist die Symbolleiste Komponente.
export default class Toolbar extends Component {
//noinspection JSUnusedGlobalSymbols
static contextTypes = {
navigator: PropTypes.object
};
//noinspection JSUnusedGlobalSymbols
static propTypes = {
onIconPress: PropTypes.func.isRequired
};
//noinspection JSUnusedGlobalSymbols
constructor(props) {
super(props);
this.state = {
title: AppStore.getState().routeName,
theme: AppStore.getState().theme,
menuIcon: '',
locationIcon: ''
};
}
emitChangeMarket() {
AppEventEmitter.emit('onClickEnableNavigation');
}
//noinspection JSUnusedGlobalSymbols
componentDidMount =() => {
AppStore.listen(this.handleAppStore);
AppEventEmitter.addListener('showIcons', this.showIcons.bind(this));
};
//noinspection JSUnusedGlobalSymbols
componentWillUnmount() {
AppStore.unlisten(this.handleAppStore);
}
handleAppStore = (store) => {
this.setState({
title: store.routeName,
theme: store.theme
});
};
showIcons(val) {
if (val === true) {
this.setState({
menuIcon: 'menu',
locationIcon: 'location-on'
});
} else {
this.setState({
menuIcon: '',
locationIcon: ''
});
}
}
render() {
let menuIcon = this.state.menuIcon;
let locationIcon = this.state.locationIcon;
const {navigator} = this.context;
const {theme} = this.state;
const {onIconPress} = this.props;
return (
<MaterialToolbar
title={navigator && navigator.currentRoute ? navigator.currentRoute.title : 'Metro Tracker Login'}
primary={theme}
icon={navigator && navigator.isChild ? 'keyboard-backspace' : {menuIcon}}
onIconPress={() => navigator && navigator.isChild ? navigator.back() : onIconPress()}
actions={[{
icon: {locationIcon},
onPress: this.emitChangeMarket.bind(this)
}]}
rightIconStyle={{
margin: 10
}}
/>
);
}
}
Die Warnmeldung ich erhalte, ist die:
Ungültige prop Symbol Objekt vom Typ Symbolleiste geliefert, erwartet einen String.
Wie kann ich eine Zeichenfolge übergeben, während sie in variablen Klammern eingeschlossen ist?
Oder wenn einfacher wie kann ich die gesamte Symbolleiste ausblenden/anzeigen? so oder so funktioniert.
bereits, dass versucht. Habe diesen Fehler "RawText" "muss in eine explizite Komponente eingepackt werden" –
texas697
Ich tauchte in den GitHub-Code für react-native-Material-Design und es gibt keinen Grund für dieses passiert, wie es passiert, wenn Ihr Symbol leer Zeichenfolge entspricht . Welche Zeile und welche Datei passiert? – whitep4nther