Как в JSX установить className как строку + {prop}


81

Я немного новичок в React и пытаюсь установить className как string + prop. Но я не уверен, как это сделать и насколько это лучше.

Итак, что я пытаюсь сделать, и это, очевидно, не работает, это следующее:

<a data-featherlight='string' + {this.props.data.imageUrl}>

Как бы мне это написать?

Ответы:


191

Вы можете использовать конкатенацию строк

<a data-featherlight={'string' + this.props.data.imageUrl}>

или используйте Template stringsновую функцию ES2015

<a data-featherlight={ `string${this.props.data.imageUrl}` }>

4

Вы также можете попробовать:

<a data-featherlight={'string1' + this.props.data.imageUrl + 'string2'}>

или же

<a data-featherlight={ `string1 ${this.props.data.imageUrl} string2` }>

Если вы используете компонент Link, вы можете выполнить конкатенацию следующим образом:

<Link to={`getting-started/${this.props.message}`}>
     <h1>Under {this.props.message}/-</h1>
</Link>

1

Насколько мне известно, сначала:

<a data-featherlight={'your string' + this.props.data.imageUrl}>

Второй:

<a data-featherlight={`your string ${this.props.data.imageUrl}`}>

2
Чем это отличается от принятого ответа от 2016 года?
Arjan

0

В JSX для конкатенации className ваша строка и реквизиты должны быть между фигурными скобками «{}», потому что фигурные скобки обозначают JSX для оценки всего, что находится внутри, с точки зрения JS. Так что тебе стоит попробовать

<a data-featherlight={'string' + this.props.data.imageUrl}>

2
Чем это отличается от принятого ответа от 2016 года?
Arjan
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.