2016-03-07 34 views
19

Durumun componentDidMount numaralı duruma ayarlamak için bir anti-pattern olduğunu ve bir durumun componentWillMount olarak ayarlanması gerektiğini, ancak bir li etiketinin uzunluğunu bir durum olarak ayarlamak istediğimi biliyorum. li etiketler bu aşamasında monte edilmiş olmayabilir çünkü bu durumda, componentWillMount üzerinde devlet belirleyemezsiniz. Peki, burada en iyi seçenek ne olmalı? Durumu componentDidMount olarak ayarlarsam iyi olur mu?componentDidMount() öğesinin ayarlanması

+1

bazı sahne (veya veri) dayalı 'li' etiketlerini işlemek mı? Sadece data.length 'i kullanabilir misiniz? –

+0

sadece basitçe koyarak. i 4 'li' etiketleri ettik demek ve benim' maxNumber' devlet 4. ancak ben bazı sahne (veya veri) dayalı 'li' etiketlerini işlemek do olmalı ki bunlardan sayısını almak istiyorum. –

+0

O() 'max hesaplamak ve orada duruma koymak getInitialState 'de sahne verileri kullanır. Bileşenin monte edilmesini beklemek gerekmemektedir. – wintvelt

cevap

24

O componentDidMount içinde setState çağırmak için bir anti-desen değil. Aslında, ReactJS their documentation bu bir örneğini sağlar:

componentDidMount verileri çeker. Yanıt geldiğinde, verileri UI'nizi güncellemek için bir işlemi tetikleyerek, verileri depolayın.

Example From Doc

componentDidMount: function() { 
    this.serverRequest = $.get(this.props.source, function (result) { 
     var lastGist = result[0]; 
     this.setState({ 
     username: lastGist.owner.login, 
     lastGistUrl: lastGist.html_url 
     }); 
    }.bind(this)); 
    } 
+19

'setState' burada bir geri çağırma işlevine yapılır - bu [farklı senaryo] bir parçasıdır (http://jaketrent.com/post/set-state-in-callbacks-in-react/) – Jordan

+0

i değilim Eminim bir anti-desen. [Mevcut belgeler] (https://facebook.github.io/react/docs/react-component.html#componentdidmount) componentDidMount' 'devlete ayar yeniden oluşturma tetikleyecek bahseder, ama kötü olma söz edilmiyorsa uygulama. – worc

+0

@worc bu cevap, bunun bir anti-desen olmadığını açıklıyor. – lux

İlgili konular