2015-02-25 32 views
15

Aşağıdaki Widget sınıfı adres:kullanma React.js statik

var Widget = React.createClass({ 
    statics: {title: "a title"}, 
    ... 
}); 

class'es yöntemleri içinde statik başlık erişmenin bir yolu var mı (this kullanarak)? Örneğin:

render: function() { 
    return <div>{this.title}</div>; 
} 
+0

. Yalnızca Widget.title – Dhiraj

cevap

18

Sen this.constructor gelen bileşeni içinden bir statik erişebilirsiniz:

yüzden bu durumda olurdu: Sınıfın içinde statik erişemez

this.constructor.title 
+2

Bu belgelenmiş mi? Öyleyse bağlantıyı alabilir miyiz? – phpslightly

5

bir tepki Sınıf statics amacı, statik yöntemleri (çalıştırmak için bir bağlam gerekmez, yani, yöntem) tanımlamak için kullanılan bir yöntemdir. Bu söyleniyor, this'dan statik bir yöntemi çağırmak mantıklı değil.

"Statik" bir özellik (yani, değiştirilemez) aradığınız anlaşılıyor. Yani, render()'da this.props.title gibi kullanmalısınız. Başlık değerini ayarlamak için <Widget title='a title'/> yapmalısınız. getDefaultProps yöntemini tanımlayarak varsayılan özellikleri belirleyebileceğinizi belirtmeye değer.

statics hakkında daha fazlası ve yaklaşık props React's doc.

8

doğrudan cevap:

React.createClass({ 
    title: 'a title', 
    render: function() { 
     return <div>{this.title}</div>; 
    } 
}); 

Veya:

React.createClass({ 
    componentWillMount: function(){ 
     this.title = 'a title'; 
    }, 
    render: function() { 
     return <div>{this.title}</div>; 
    } 
}); 

Ama gerçekten ... neden sadece bir değişken kullanılır?

var TITLE = 'a title'; 

React.createClass({ 
    render: function() { 
     return <div>{TITLE}</div>; 
    } 
}); 
+2

'u yapabilirsiniz. Uyarıda bulunun, örneğin # 3 'TITLE' statik olacak ve sınıfın her örneği arasında paylaşılacak. –

+0

Evet, buradaki niyetin OP'den bahsetmiş olmasından dolayı burada olduğuna inanıyorum. – FakeRainBrigand

+0

Kötü, sorumu yanlış anladım. Tercih ettiğim stil uzun bir örnekle 3 numaralı örnektir. –

İlgili konular