【问题标题】:Adding a `title` attribute line break using 
 to a JSX element添加一个`title`属性换行符使用 到 JSX 元素
【发布时间】:2020-08-04 10:13:25
【问题描述】:

我知道我可以使用
 为 HTML title 属性添加换行符,但 React 会转义。

例如,这是一个 React 组件,其中包含一个标准的、非 React 处理的 title 属性,其中包含换行符...

并且可以在浏览器中看到效果...

但是如果 React 正在处理 title 属性...

...那么这是输出...

浏览器控制台显示这已被转义...

如何编写一个在输出中仍包含
 的 JSX 元素?或者有没有其他方法可以在 JSX 元素的 title 属性中添加换行符?


更新

我发现如果 title 属性由 React 处理,\n 将添加一个换行符,而 
 被转义为相同的 title 属性。然而,在title 属性中使用\n,它由 React 处理,只会输出“\n”——在这些情况下,我仍然必须使用


【问题讨论】:

    标签: javascript html reactjs


    【解决方案1】:

    这不是特定于 react 的事情,javasricpt 会看到作为string,您可以使用新线租船者\n,如果它通过react,它仍然不起作用,因此您可以通过其他方式逃避它通过在编译时进行编码,在运行时进行解码来达到预期的效果。 这是在反应中使用encodeURI 的演示:

    // %0A is URI encoded of newline character
    // fellan bisar will be shown in two lines
    
    function App() {
        return (
         <p title={decodeURI("fellan%0Abisar")}>
           behman bisar fellan ....  
         </p>
         )
    }
    
    ReactDOM.render(<App />, document.getElementById('root'));
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
    
    <div id="root"></div>

    下面的sn-p是javascript的演示:

    fail.title = "fellan &#10; bisar";
    
    success.title = decodeURI("fellan %0A bisar");
    <p id="fail">fellan bisar bahman</p>
    
    <p id="success">bahman bisar fellan</p>

    【讨论】:

    • 我在同一个 React 组件中有另一个元素,我可以在其中插入 &amp;#10; 并且页面上出现 line-breal does。我无法完全解释为什么您的示例中没有出现换行符,但是当我单击“运行代码 sn-p”时,我可以看到 &amp;amp; 已转义为 &amp;amp;。尽管如此,我的观点仍然存在 - JavaScript 允许使用此字符进行换行,但它在我的 React 组件中被过滤掉了。
    • @awj 你用的是什么浏览器?
    • Firefox 和 Edge/Chrome。
    • 您认为\\n\\t 是“正常”JavaScript 的建议是错误的——它们应该有单个反斜杠。但是,\n 确实 工作。如果您将您的答案改写为建议 \n 而不是解码的 `%0A1,那么我会将其标记为已接受。
    • @awj 我为我想要的解决方案添加了一个反应示例,​​我很想知道它是否仍然无法在您的浏览器中正确显示?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2017-02-26
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多