最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

将React元素呈现为其初始HTML

运维笔记admin13浏览0评论

将React元素呈现为其初始HTML

将React元素呈现为其初始HTML

我正在尝试从服务器端的反应代码中提取初始HTML。要做到这一点,我正在使用官方react-dom/server库函数renderToStaticMarkup()在这里引用:.html#rendertostaticmarkup

我正在阅读一个反应源文件,使用Babel将JSX和ES6语法转换为CommonJS,然后将评估的CommonJS解析为renderToStaticMarkup()

反应代码:

import React from 'react';

class Test extends React.Component {
    render() {
        return `<p>Hello World!</p>`;
    }
}

export default Test;

服务器端代码:

const { renderToStaticMarkup } = require( 'react-dom/server');
const Babel = require( '@babel/core' );
const Fsp = require( 'fs' ).promises;

(async () => {
    let fileContent = await Fsp.readFile( 'react.js', 'utf-8' );

    let code = Babel.transform( 
        fileContent, 
        { 
            presets: [ '@babel/preset-env', '@babel/preset-react' ],
            comments: false,
            minified: true
        }).code;

    let result = renderToStaticMarkup( eval( code ) );

    console.log( result );
})();

此示例代码返回空字符串""而不是预期的<p>Hello World!</p>

回答如下:

我能够通过在评估的组件上使用React.createElement()函数来解决这个问题。

    let result = renderToStaticMarkup( eval( code ) );

应该:

    let result = renderToStaticMarkup( React.createElement( eval( code ), { props } ) );

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论