【问题标题】:discrepancy in span width between React and pure HTML implementationReact 和纯 HTML 实现之间的跨度宽度差异
【发布时间】:2016-03-03 13:01:55
【问题描述】:

当我发现一个我无法解释的差异时,我试图弄清楚如何使用 ReactJS 在元素之间应用水平空间。

SSCCE 下面:(也在jsfiddle)

<!doctype html>
<html>
  <body>
    <span>foo</span>
    <span style='display:inline-block; width:30px'></span>
    <span>bar</span>
    <div id='div0'></div>
    <script src="https://cdn.jsdelivr.net/react/0.14.0-rc1/react.js">    </script>
    <script src="https://cdn.jsdelivr.net/react/0.14.0-rc1/react-dom.js"></script>
    <script type='text/javascript'>
     var rce = React.createElement.bind(React);
     var x = (rce('div', {}
       , rce('span', {}, 'foo')
       , rce('span', {style: {display: 'inline-block', width: '30px'}})
       , rce('span', {}, 'bar')));
     ReactDOM.render(x, document.getElementById('div0'));
    </script>
  </body>
</html>

以上代码在输出中产生:

鉴于 DOM 元素是相同的(data-reactid 属性的存在除外):

那么,为什么会出现这种间距差异?

【问题讨论】:

    标签: css reactjs


    【解决方案1】:

    这是因为您的 HTML 代码中的内联 html 元素之间存在间距。 React 默认删除它。

        <span>foo</span><span style='display:inline-block; width:30px'></span><span>bar</span>
    

    DEMO

    使用 HTML 代码中的注释空间可以实现相同的结果。

    <span>foo</span><!-- 
    --><span style='display:inline-block; width:30px'></span><!-- 
    --><span>bar</span>
    

    DEMO

    而且代码实际上确实不同。你可以注意到 React 生成的 HTML 中没有空格。

    【讨论】:

    • 我已经接受了你的回答,但我认为我应该删除这个问题。它不太可能帮助其他任何人,因为它根本与 React 无关。
    • 不要删除这个。这拯救了我的一天!
    猜你喜欢
    • 2013-07-02
    • 2019-05-05
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多