2015-02-25 4 views
15

я следующий класс виджета:Использование React.js статики внутри методов класса

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

Есть ли способ доступа название статической внутри методов class'es (с использованием this)? Например:

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

вы не можете получить доступ к статики в классе. Вы можете делать только Widget.title – Dhiraj

ответ

18

Вы можете получить доступ к статическим внутри компонента из this.constructor:

так что в этом случае было бы:

this.constructor.title 
+2

Является ли это документированным? Если бы мы могли получить ссылку? – phpslightly

5

statics объектом React класса является способом определения статических методов (т.е. методов, которые не нуждаются в каком-либо контексте для запуска). При этом не имеет смысла называть статический метод от this.

Похоже, что вы ищете «статическое» свойство (т. Е. Не изменяемое). Таким образом, вы должны использовать его как this.props.title на render(). Чтобы установить значение заголовка, вы должны сделать <Widget title='a title'/>. Следует отметить, что вы можете установить свойства по умолчанию, указав метод getDefaultProps.

Подробнее о statics и около props по документу React.

8

Прямой ответ:

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

Или:

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

Но на самом деле ... почему бы не просто использовать переменную?

var TITLE = 'a title'; 

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

Будьте осторожны, в примере №3 'TITLE' будет статичным и общим для каждого экземпляра класса. –

+0

Да, я считаю, что это было намерение здесь, потому что ОП упомянул статику. – FakeRainBrigand

+0

Плохо, я неправильно понял вопрос. Мой предпочтительный стиль - ваш пример № 3 длинным выстрелом. –

Смежные вопросы