Вы почти правы, просто неуместно несколько цитат. Заключение в обычные кавычки буквально даст вам строку #demo + {this.state.id}
- вам нужно указать, какие переменные, а какие строковые литералы. Поскольку все, что {}
находится внутри, является встроенным выражением JSX , вы можете сделать:
href={"#demo" + this.state.id}
Это будет использовать строковый литерал #demo
и объединит его со значением this.state.id
. Это может быть применено ко всем строкам. Учти это:
var text = "world";
И это:
{"Hello " + text + " Andrew"}
Это даст:
Hello world Andrew
Вы также можете использовать строковые интерполяции / шаблонные литералы ES6 с `(обратные метки) и ${expr}
(интерполированное выражение), что ближе к тому, что вы пытаетесь сделать:
href={`#demo${this.state.id}`}
Это в основном заменит значение this.state.id
, объединяя его #demo
. Это эквивалентно делать: "#demo" + this.state.id
.
Лучший способ объединить реквизиты / переменные:
источник
exampleData =
example1 =
example2 =
Я рекомендую второй пример, это быстрее.
источник