2016-10-09 13 views
0
class Button extends React.Component{ 
    renderAnchor(){ 
     return <a onClick={this.props.onClick}>{this.props.children}</a> 
    } 
    renderButton(){ 
     return <button onClick={this.props.onClick}>{this.props.children}</button> 
    } 
    render(){ 
     return (this.tagName==='a')?this.renderAnchor():this.renderButton(); 
    } 

} 

Я выше реагируют-компонент, я хочу, чтобы избежать кода избыточности, так что, я решил удалить все визуализации методы, кроме последнего (render) путем замены тэга по this.props.tagNameотражение, чтобы передать тэгу как строка реквизита, чтобы быть оказаны

 render(){ 
     return <{this.props.tagName} onClick={this.props.onClick}>{this.props.children}</{this.props.tagName}> 
    } 

Однако, это вызывает ошибку синтаксиса.

Как использовать отражение тэга в реакции/ES7/Babel?

ответ

2

Вы можете назначить имя тега переменной и использовать эту переменную в качестве тега HTML.

Например:

render(){ 
    const CustomTag = this.props.tagName //assign it to the variable 

    return <CustomTag 
     onClick={this.props.onClick}> 
      {this.props.children} 
     </CustomTag> 

Демонстрация: https://jsfiddle.net/88honb0z/