[英]Trying to interpolate JSX with a string
您可以使用條件運算符:
<h1>{ this.state.submitedFirstName ? ` Hello ${this.state.submitedFirstName}` : ""}</h1>
如果 this.state.submitedFirstName 未定義或任何虛假信息(例如空字符串“”),它將返回“Hello Mike”或返回空字符串。
您還可以將條件移到外面,這樣它甚至不會呈現 h1 標記,除非有名稱。
{this.state.submitedFirstName && <h1>Hello {this.state.submitedFirstName}</h1>}
這是一個更新來解釋為什么原始代碼不起作用。 我將把它分解成它被執行的順序並解釋:
state this.state.submitedFirstName
開頭未定義。 因此,當代碼第一次運行時, && (AND 運算符)的左側計算結果為undefined
。 因為 && 不滿足,所以從表達式中返回左側:
console.log(this.state.submitedFirstName && this.state.submitedFirstName) // undefined (from the left side to be specific)
console.log(`${undefined}`) // "undefined" is converted to string
console.log(`Hello ${undefined}`) // "Hello undefined"
在 state 設置后this.state.submitedFirstName === "Mike"
。 左側“Mike”的計算結果為真,因此它返回也是“Mike”的右側。
console.log(this.state.submitedFirstName && this.state.submitedFirstName) // "Mike" (from the right side to be specific)
// console.log(`Hello ${"Mike"}`) // "Hello Mike"
這就是它返回“Hello undefined”或“Hello Mike”的原因。
這樣,如果 this.state.submitedFirstName 是 null 或未定義,則渲染方法將返回 null。
render() {
const { submitedFirstName } = this.state;
return (
!!submitedFirstName
&& <h1>{`Hello ${submitedFirstName}`}</h1>
);
}
你有沒有嘗試過:
<h1>Hello {YOUR_VARIABLE_HERE}</h1>
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.