在JSX中輸出固定內(nèi)容
直接使用UTF-8字符
<div>版權(quán) ?</div>
使用HTML轉(zhuǎn)義字符
<div>版權(quán) ?</div>
或者十進(jìn)制的轉(zhuǎn)義字符
<div>版權(quán) ?</div>
動態(tài)內(nèi)容的轉(zhuǎn)義
但是如果在外面加一層大括號的話,react為了防止xss會將轉(zhuǎn)義后的字符實體再次轉(zhuǎn)義
React 會將所有要顯示到 DOM 的字符串轉(zhuǎn)義,防止 XSS。所以,如果 JSX 中含有轉(zhuǎn)義后的實體字符,比如 ?(?),則最后 DOM 中不會正確顯示,因為 React 自動把 ? 中的特殊字符轉(zhuǎn)義了。
<div>{'版權(quán) ?'}</div>
錯誤輸出
版權(quán) ?
正確寫法:
直接使用UTF-8字符仍然可以正確輸出
<div>{'版權(quán) ?'}</div>
安全的做法是使用對應(yīng)的Unicode碼
<div>{'版權(quán) \u00a9'}</div>
使用fromCharCode
<div>{'版權(quán) ' + String.fromCharCode(169)}</div>
使用數(shù)組組裝
<div>{['版權(quán) ', <span>?</span>]}</div>
使用dangerouslySetInnerHTML,可以避免React轉(zhuǎn)義字符
<div dangerouslySetInnerHTML={{ __html: '版權(quán) ?' }} />