2016-03-23 17 views
1
  1. BileşenWillReceiveProps içinde tanımlanmamış bir anti-desen döndürüyor mu?

Örnek:BileşenWillReceiveProps içinde tanımlanamayan veya boş dönen bir anti-desen mi?

class MyComponent extends React.Component { 
 
    componentWillReceiveProps(nextProps) { 
 
    if (nextProps.somethingHappened) { 
 
     return 
 
    } 
 
    otherThingHappened() 
 
    } 
 
}

  1. boş iç componentWillReceiveProps dönen bir anti-desen var mı?

Örnek:

class MyComponent extends React.Component { 
 
    componentWillReceiveProps(nextProps) { 
 
    if (nextProps.somethingHappened) { 
 
     return null 
 
    } 
 
    otherThingHappened() 
 
    } 
 
}

+0

Her ikisi de iyi gibi hissetmek istiyorum çünkü bunu oldukça sık yapmak isteyeceksiniz, örneğin sahne aldığınızda, ancak bunlardan birinin önceki sürümle aynı olup olmadığını güncellemek istemiyorsanız – ZekeDroid

cevap

4

O değildir. Component Specs and Lifecycle doccomponentWillReceiveProps'a göre hiç bir şeyden geri gelmesi beklenmemektedir. Hemen sonra atılacak bir değer döndürmek garip görünüyor.

+1

Seçenek 1: hiçbir şey döndürmemek, 'null' döndürmekten biraz daha iyidir. BTW Ben her iki durumda da "antipattern" kabul etmem. Anti-pattern ile ilişkim "kodun mantıksal akışına karşı gelen bir şey" dir. Bu soru, eğer bir şey varsa, geri dönülmesiyle ilgilidir. Her iki seçenek de, "componentWillReceiveProps" işlevini çalıştırma akışını değiştirir ve ardından denetimi geri alma ömrü döngüsüne döndürür. – wintvelt

+0

bir kullanım örneği örneği, erken çıkış yapmasına olacaktır: (! This.isAuthorized (nextProps)) 'eğer { dönüş } nextProps.showNotification (...)' HélitonNordt erken çıkma @ –

+0

bir react- değil belirli bir şey. Bkz. [Bir işlevden dönmeli-erken-soru] (http://programmers.stackexchange.com/questions/18454/should-i-return-from-a-function-early-or-use- Artıları ve eksileri için programmers.stackexchange.com üzerinde bir-if-deyimi). – Li0liQ

İlgili konular