在react項目中,有的時候字符串中有HTML標簽,如果直接輸出字符串的話,那HTML標簽就會被當成一個字符串。這顯然不是我們想要的效果,所以我們需要用到
dangerouslySetInnerHTML 這個屬性來將dom字符串渲染出來。
dangerouslySetInnerHTML
dangerouslySetInnerHTML 是 React 為瀏覽器 DOM 提供 innerHTML 的替換方案。通常來講,使用代碼直接設置 HTML 存在風險,因為很容易無意中使用戶暴露於跨站腳本(XSS)的攻擊。因此,你可以直接在 React 中設置 HTML,但當你想設置 dangerouslySetInnerHTML 時,需要向其傳遞包含 key 為 __html 的對象,以此來警示你。例如:
1 function createMarkup() { 2 return {__html: 'First · Second'}; 3 } 4 5 function MyComponent() { 6 return <div dangerouslySetInnerHTML={createMarkup()} />; 7 }
使用例子:
1 // js 2 3 const Str = '需要鼠標<br/>需要特別檢查攝像頭<br/>需要電腦包<br/>測試機轉租賃,序列號:XKS2014' 4 5 6 // 輸出 7 8 <span dangerouslySetInnerHTML={{__html: Str}}></span> 9 10 11 //結果 12 13 // 需要鼠標 14 // 需要特別檢查攝像頭 15 // 需要電腦包 16 // 測試機轉租賃,序列號:XKS2014
