Calling setState im Render ist nicht vermeidbar

as @ React-Dokument gibt an, dass dasrender Funktion sollte @ serei was bedeutet, dass es nicht @ verwenden sollthis.setState drin. Ich glaube jedoch, wenn der Zustand von 'remote' abhängt, d. h. Ergebnis eines Ajax-Aufrufs. Die einzige Lösung istsetState() in einemrender function

n meinem Fall. Unsere Benutzer sollten sich anmelden können. Nach der Anmeldung müssen wir auch den Zugriff des Benutzers (Ajax-Aufruf) überprüfen, um zu entscheiden, wie die Seite angezeigt werden sol

React.createClass({
     render:function(){
          if(this.state.user.login)
          {
              //do not call it twice
              if(this.state.callAjax)
              {
              var self=this
              $.ajax{
                  success:function(result)
                  {
                      if(result==a) 
                      {self.setState({callAjax:false,hasAccess:a})}
                      if(result==b) 
                      {self.setState({callAjax:false,hasAccess:b})}

                  }
              }
              }
              if(this.state.hasAccess==a) return <Page />
              else if(this.state.hasAccess==a) return <AnotherPage />
              else return <LoadingPage />
          }
          else
          {
            return <div>
                   <button onClick:{
                   function(){this.setState({user.login:true})}
                   }> 
                   LOGIN
                   </button>
                   </div>
          }
     }
})

Der Ajax-Aufruf kann nicht in @ angezeigt werdcomponentDidMount denn wenn der Benutzer auf die Schaltfläche "Anmelden" klickt, wird die Seite neu gerendert und benötigt auch einen Ajax-AufrusetState ist innerhalb desrender Funktion, die gegen das React-Prinzip verstößt

Irgendwelche besseren Lösungen? Danke im Vorau

Antworten auf die Frage(2)

Ihre Antwort auf die Frage