简体   繁体   English

可以危险地SetInnerHTML保留标签名称的大小写吗?

[英]Can dangerouslySetInnerHTML preserve tag name case?

I have the following: 我有以下几点:

this.props.message = '<NavLink to="/mypage">Click Me</NavLink>';

Which I want to render, so using dangerouslySetInnerHTML I try 我要渲染的,所以我尝试使用dangerouslySetInnerHTML

dangerouslySetInnerHTML={{ __html: this.props.message }}

But it renders <navlink to="/mypage">Click Me</navlink> (notice tag names all lower case) 但是它会呈现<navlink to="/mypage">Click Me</navlink> (注意,标记名称全部为小写)

Which means the <NavLink /> component is now not recognised. 这意味着<NavLink />组件现在无法识别。

Is there a way to preserve the case? 有办法保存案件吗?

As @Felix mentioned, dangerouslySetInnerHTML is for rendering HTML, not JSX. 作为@Felix提到, dangerouslySetInnerHTML是渲染HTML,不JSX。

this.props.message = <NavLink to="/mypage">Click Me</NavLink>;

You should be able to just render this as: 您应该能够将其呈现为:

{this.props.message}

Alternatively, you could use a render prop: 或者,您可以使用render道具:

import React from "react";
import ReactDOM from "react-dom";

const A = ({ render, children }) => {
  return <div style={{ fontSize: 40 }}>{render(children)}</div>;
};

const B = ({ name }) => {
  return <div style={{ color: "red" }}>{name}</div>;
};

const App = () => {
  return (
    <A
      render={name => {
        return <B name={name} />;
      }}
    >
      Colin
    </A>
  );
};

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

CodeSandbox here . CodeSandbox 在这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM