Объединение переменных и строк в React

есть ли способ включить обозначение фигурной скобки React и href тег? Скажем, у нас есть следующее значение в состоянии:

{this.state.id}

и следующие атрибуты HTML в тег:

href="#demo1"
id="demo1"

есть ли способ добавить id состояние атрибута HTML, чтобы получить что-то вроде этого:

href={"#demo + {this.state.id}"}

который даст:

#demo1

2 ответов


вы почти правы, просто неуместны несколько цитат. Обертывание всего этого в регулярные кавычки буквально даст вам строку #demo + {this.state.id} - вам нужно указать, какие переменные и какие строковые литералы. Так как ничего внутри {} является встроенным JSX выражение, вы можете сделать:

href={"#demo" + this.state.id}

это будет использовать строковый литерал #demo и объединить его со значением this.state.id. Затем это можно применить ко всем строкам. Считать это:

var text = "world";

и так:

{"Hello " + text + " Andrew"}

это даст:

Hello world Andrew 

вы также можете использовать интерполяцию строк ES6/шаблон литералы С ` (backticks) и ${expr} (интерполированное выражение), что ближе к тому, что вы, похоже, пытаетесь сделать:

href={`#demo${this.state.id}`}

это в основном заменит значение this.state.id, объединяя его в #demo. Это эквивалентно выполнению:"#demo" + this.state.id.


лучший способ конкат реквизит/переменные:

var sample = "test";    
var result = `this is just a ${sample}`;    
//this is just a test