javascript - 在 React.js 中渲染 HTML 时没有额外的 "data-reactid"DOM 属性?

标签 javascript reactjs

所以,我在我的一个 react.js 文件中做这样的事情:

 render: function() { 
    var stuff = this.props.stuff;

    function getHtmlForKey(key_name, title) {
        var key_name = key_name.toLowerCase();
            return Object.keys(thing).filter(function(key) {
                return key && key.toLowerCase().indexOf(key_name) === 0;
            }).map(function(key, index) {
                var group_title = index === 0 ? title : '';
                if(profile[key] != null && thing[key] != "") {
                    return (
                        <span>
                        {group_title ? (
                            <li className="example-group-class">{group_title}</li>
                        ) : null }
                        <li key={key} className="example-class">
                            {thing[key]}
                        </li>
                        </span>
                    );
                }    
            }, this);
    }

    /** Grouping by keyword **/
    var group1 = getHtmlForKey('stuff1', 'Group Title 1');

    /** Return Facecards **/
    if (stuff) {
        return (
            <div className="col-md-6">
                <div className="media">
                    <div className="pull-left">
                        <a href="#" onClick={this.open}>
                            <img src={this.props.stuff} className="media" />
                        </a>
                    </div>
                    <div className="top">
                        {group1}
                    </div>
       }
}

当它渲染时输出如下内容:

  <li class="example-group-title" data-reactid=".0.0.2.0.$2083428221.0.1.0:0.0">Group Title</li>

在我的另一个 react.js 文件中,我有:

    var StuffApp = require('./components/StuffApp.react');

    ReactDOM.render(
    <StuffApp />,
     document.getElementById('main-content')
    );

如何呈现 HTML,使其不包含所有额外的 DOM 属性标记(即 data-reactid)?我只是想试着节省一些,你知道吗?我一直在阅读与 https://facebook.github.io/react/docs/top-level-api.html 相关的内容ReactDomServer,但想知道是否有更简单的方法?如果没有,我将如何整合它?

最佳答案

您正在寻找的方法是 ReactDOM.renderToStaticMarkup

来自docs :

Similar to renderToString, except this doesn't create extra DOM attributes such as data-react-id, that React uses internally. This is useful if you want to use React as a simple static page generator, as stripping away the extra attributes can save lots of bytes.

这只有在您在服务器 上呈现时才会有所不同。此外,此标记与 React 不兼容,因此它实际上只对仅显示组件有用。

但是,你的这段话让我很困惑:

How do I render the HTML so it doesn't include all the extra DOM attribute markup (that is, the data-reactid)? I just want to try and save some bits, ya know?

如果你想节省位,你不会在客户端(这是 React 运行的地方)做,你会在服务器上做,这样你就可以传输更少的位到客户端。一旦应用程序在客户端的浏览器上运行,您就不必担心那些 DOM 属性占用的额外内存(这实际上是您唯一要保存的部分)。

关于javascript - 在 React.js 中渲染 HTML 时没有额外的 "data-reactid"DOM 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274060/

相关文章:

javascript - jQuery 图像选择器 - 以编程方式选择多个图像

javascript - 根据顶部窗口的scrollTop定位弹出iframe

javascript - 使用 Node js 进行 Angular http 路由

javascript - 如何更新 Json 对象数组中的一个字段?

javascript - 使用钩子(Hook)取消 React 组件中的 requestAnimationRequest 不起作用

javascript - PHP $_Get 和 JQuery .load

javascript - 如何以正确的方式从 JavaScript 获取 contextPath?

javascript - Heroku 上的 React 应用程序无法启动

javascript - 在 babel react 中禁用 React.createClass 和 PropTypes 弃用警告

javascript - 当非 prop 或状态变量发生变化时,React 如何知道渲染组件?