2015-11-17 4 views
0

Предположим, у меня есть react.js компонент с помощью этого метода визуализации (с использованием JSX):react.js предотвратить атрибут из записывается

render: function() { 
    return (
    <a href={this.state.something?this.props.url:null}>Click</a> 
); 
} 

Независимо от бесполезности этого компонента, мой вопрос заключается в следующем:

В случае, если something является ложным, отреагируйте на это как <a href>Click</a>, но я бы предпочел его визуализировать как <a>Click</a>.

Как я могу это достичь?

ответ

0

Вы можете использовать объект распространяться здесь, если это поддерживается!

var props = {href:this.props.url}; 
if(!this.state.something){ 
    props = {} 
} 
return <a {...props}>Click</a> 
+0

Хорошо, попробовал. Но это тоже не работает. Во время транспиляции JSX babeljs дает мне синтаксическую ошибку при открытии {in ghost23

+0

Возможно, вам понадобится обновить свой Babel до последней версии, чтобы поддерживать Object rest/spread. – Mickey

0

Вы можете достичь этого с помощью следующего кода, в основном добавляя «href» к URL-адресу.

render: function() { 
    return (
    <a {this.state.something?"href="+this.props.url:null}>Click</a> 
); 
} 
+0

Хорошо, попробовал. Но это не работает. Во время трансляции JSX babeljs дает мне синтаксическую ошибку. – ghost23

0

Если вы просто хотите, чтобы убедиться, что href не появляется, то вы могли бы сделать, как это, а также избежать текста в тройном оператора для несколько чище выглядеть

render = function() { 
    props = this.state.something? {href: this.props.url} : {}; 
    el = react.createElement('a', props, 'Click'); 
    return el; 
} 
+0

Спасибо, что работает. Я бы предпочел решение jsx :) – ghost23

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