前言: 因为使用图表里面formatter函数需要原生的html标签,但是本身技术栈是react,所以为了方便,便使用了ReactDomServer apireact组件转化成html原生标签

引入

import ReactDomServer from 'react-dom/server';

使用

renderToString()

ReactDOMServer.renderToString(element)

最基础的 SSR API,输入 React 组件(准确来说是ReactElement),输出 HTML 字符串。之后由客户端 hydrate API 对服务端返回视图结构附加上交互行为,完成页面渲染

If you call ReactDOM.hydrate() on a node that already has this serverrendered markup, React will preserve it and only attach event handlers.

renderToStaticMarkup()

ReactDOMServer.renderToStaticMarkup(element)

renderToString类似,区别在于 API 设计上,renderToStaticMarkup用于展示没有事件交互,不需要 hydrate)的场景

This is useful if you want to use React as a simple static page generator, as stripping away the extra attributes can save some bytes. If you plan to use React on the client to make the markup interactive, do not use this method. Instead, use renderToString on the server and ReactDOM.hydrate() on the client.

因此renderToStaticMarkup生成干净的 HTML,不带额外的 DOM 属性(如data-reactroot),比较干净小巧

二者渲染结果分别为:

// renderToString
<div data-reactroot=""&gt;<h1 class="here"&gt;Welcome to React SSR!<!-- --> Hello There!</h1></div>

// renderToStaticMarkup
<div><h1 class="here">Welcome to React SSR! Hello There!</h1></div>

React 16 以后 renderToStaticMarkuprenderToString的实际差异主要在于:

所以我这里用的是RenderToStaticMarkup() 方法

代码

import React from 'react';
import ReactDomServer from 'react-dom/server';
const B =()=>{
    
    const renderHtml = ()=>{
        return ReactDomServer.renderToStaticMarkup(
            <div className="abcd" style={{fontSize:25,marginTop:10,fontWeight:"bold"}}>测试renderToStaticMarkup</div>
        )
    }
    console.log('fff',renderHtml());
    return <div dangerouslySetInnerHTML={{__html:renderHtml()}} />
}
export default B

效果

原文地址:https://blog.csdn.net/wangshang1320/article/details/134681660

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_26834.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注