Bitte korrigieren Sie mich, wenn mein Denkprozess von der Orthodoxie React.js unterscheidet ..Ist es möglich, ein Element in einem Elternelement ein-/auszublenden, ohne erneut zu rendern?
Ich habe einen Elternteil < MainViewController />
, die ein <View />
Kind hat.
Wenn ein Scroll-Ereignis in meinem <View />
passiert, dann möchte ich eine Schaltfläche in meinem Eltern < MainViewController />
zeigen/verbergen.
Leider mache ich gerade setState
um zu schalten, aber es rerders Elternteil und konsequenterweise alle seine Kinder. Im Grunde setzt es meine gesamte App zurück. Gibt es einen einfacheren Weg, um ausblenden/anzeigen ohne neu zu rendern?
Mein entsprechender Code:
var MainViewController = React.createClass({
getInitialState() {
return {
showAskQuestion: false,
};
},
toggleFloatingButton() {
this.setState({
showAskQuestion: !this.state.showAskQuestion
});
},
render() {
return (
<Container>
<UI.NavigationBar name="main" />
<UI.Button type="info" className={ this.state.showAskQuestion ? '' : 'hidden' } >
Ask A Question
</UI.Button>
<ViewManager name="main" defaultView="tabs">
<View name="tabs" component={TabViewController} toggleFloatingButton={this.toggleFloatingButton} />
</ViewManager>
</Container>
);
}
});
Ok so idealistisch, react.js sollte * nur * den 'className' ändern, aber in meinem Fall wird alles neu gerendert. Was könnte das verursachen? – Trip
Ich bin mir nicht ganz sicher, was Sie meinen, wenn Sie alles neu rendern? Wenn Sie die Entwicklungstools von Chrome verwenden, blinken die betroffenen DOM-Knoten/Attribute violett. Siehst du das für die gesamte Komponente? –