В JSX, как вы ссылаетесь на значение из props
внутри значения атрибута в кавычках?
Например:
<img className="image" src="images/{this.props.image}" />
В результате получается HTML-вывод:
<img class="image" src="images/{this.props.image}">
В JSX, как вы ссылаетесь на значение из props
внутри значения атрибута в кавычках?
Например:
<img className="image" src="images/{this.props.image}" />
В результате получается HTML-вывод:
<img class="image" src="images/{this.props.image}">
React (или JSX) не поддерживает переменную интерполяцию внутри значения атрибута, но вы можете поместить любое выражение JS внутри фигурных скобок как целое значение атрибута, поэтому это работает:
<img className="image" src={"images/" + this.props.image} />
Если вы хотите использовать литералы шаблона es6, вам также понадобятся фигурные скобки:
<img className="image" src={'images/${this.props.image}'} />
Если вы используете JSX с Harmony, вы можете сделать это:
<img className="image" src={`images/${this.props.image}`} />
Здесь вы пишете значение src
как выражение.
Вместо добавления переменных и строк вы можете использовать строки шаблона ES6! Вот пример:
<img className="image" src={'images/${this.props.image}'} />
Как и для всех других компонентов JavaScript внутри JSX, используйте строки шаблона внутри фигурных скобок. Чтобы "ввести" переменную, используйте знак доллара, а затем фигурные скобки, содержащие переменную, которую вы хотите ввести. Например:
{'string ${variable} another string'}
Лучшие методы - добавить метод getter для этого:
getImageURI() {
return "images/" + this.props.image;
}
<img className="image" src={this.getImageURI()} />
Затем, если у вас больше логики, вы можете поддерживать код плавно.
Для людей, ища ответы w.r.t на функцию "map" и динамические данные, вот рабочий пример.
<img src={"http://examole.com/randomview/images" + each_actor['logo']} />
Это дает URL как " http://examole.com/randomview/images/2/dp_pics/182328.jpg" (случайный пример)
Примечание: в реакции вы можете поместить выражение javascript в фигурную скобку. Мы можем использовать это свойство в этом примере.
Примечание: взгляните на приведенный ниже пример:
class LoginForm extends React.Component {
constructor(props) {
super(props);
this.state = {i:1};
}
handleClick() {
this.setState(prevState => ({i : prevState.i + 1}));
console.log(this.state.j);
}
render() {
return (
<div>
<p onClick={this.handleClick.bind(this)}>Click to change image</p>
<img src={'images/back'+ this.state.i+'.jpg'}/>
</div>
);
}
}
Вот лучший вариант для Dynamic className или Props, просто сделайте конкатенацию, как мы делаем в Javascript.
className={
"badge " +
(this.props.value ? "badge-primary " : "badge-danger ") +
" m-4"
}