React JSX: access Props in Quotes
W JSX, jak odwoływać się do wartości z {[2] } wewnątrz cytowanej wartości atrybutu?
Na przykład:
<img className="image" src="images/{this.props.image}" />
Wynikowe wyjście HTML to:
<img class="image" src="images/{this.props.image}">
8 answers
React (lub JSX) nie obsługuje interpolacji zmiennej wewnątrz wartości atrybutu, ale możesz umieścić dowolne wyrażenie JS wewnątrz nawiasów klamrowych jako całą wartość atrybutu, więc działa to:
<img className="image" src={"images/" + this.props.image} />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-16 09:45:44
Jeśli chcesz używać literałów szablonów es6, potrzebujesz szelek wokół znaków kleszcza:
<img className="image" src={`images/${this.props.image}`} />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-22 18:39:53
Jeśli używasz JSX z Harmony, możesz to zrobić:
<img className="image" src={`images/${this.props.image}`} />
Tutaj zapisujesz wartość src
jako wyrażenie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-09 19:00:40
Najlepsze praktyki polegają na dodaniu do tego metody gettera:
getImageURI() {
return "images/" + this.props.image;
}
<img className="image" src={this.getImageURI()} />
Następnie, jeśli masz więcej logiki później, można utrzymać kod płynnie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 19:58:41
Zamiast dodawać zmienne i ciągi znaków, możesz użyć ciągów szablonów ES6! Oto przykład:
<img className="image" src={`images/${this.props.image}`} />
Podobnie jak wszystkie inne komponenty JavaScript wewnątrz JSX, użyj łańcuchów szablonów wewnątrz nawiasów klamrowych. Aby "wstrzyknąć" zmienną, użyj znaku dolara, a następnie nawiasów klamrowych zawierających zmienną, którą chcesz wstrzyknąć. Na przykład:
{`string ${variable} another string`}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-30 21:44:41
Dla ludzi, szukających odpowiedzi w. r. t do funkcji "map" i dynamicznych danych, oto działający przykład.
<img src={"http://examole.com/randomview/images" + each_actor['logo']} />
To daje adres URL jako " http://examole.com/randomview/images/2/dp_pics/182328.jpg " (przykład losowy)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-18 22:35:04
Uwaga: w reaccie możesz umieścić wyrażenie javascript wewnątrz nawiasów klamrowych. Możemy użyć tej właściwości w tym przykładzie.
Uwaga: spójrz na poniższy przykład:
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>
);
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-24 12:54:46
Tutaj jest najlepsza opcja dla Dynamic className lub Props, po prostu zrób trochę konkatenacji, tak jak robimy to w Javascript.
className={
"badge " +
(this.props.value ? "badge-primary " : "badge-danger ") +
" m-4"
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 07:25:02