React Js - 在组件上设置 innerHTML 样式 - 不起作用 - 父样式覆盖子样式

Posted

技术标签:

【中文标题】React Js - 在组件上设置 innerHTML 样式 - 不起作用 - 父样式覆盖子样式【英文标题】:React Js - Styling innerHTML on component - Not working - Parent styling is overriding child styling 【发布时间】:2021-05-12 23:38:24 【问题描述】:

我有两个反应组件。

    列表容器 列表

列表需要在列表容器内。像这样:

<Container  innerhtml=<List></List>  ></Container>

两个组件的内容都会呈现。然而,孩子的造型被父母的造型所覆盖。 (本例中为背景色)

这是完整的代码:

import React from "react";

export default function main() 
  return <div>

    <Container
      innerhtml=<List></List>
    ></Container>

  </div>


function List() 

  return <div style= backgroundColor: "#red!important", height: "150px", width: "150px" >
    this is a list
</div>


function Container(props) 

  return <div  style= backgroundColor: "#94e49d38", height: "400px", width: "100vw-10px" >
    this is container
    props.innerhtml
  </div>

我觉得可能和这个类似:Style not working for innerHTML in Angular

但是我找不到 React 等价物。

如何让列表样式起作用?

谢谢

【问题讨论】:

【参考方案1】:

#red 是无效的属性值。它应该是红色,如下所示。

backgroundColor: " red !important"

【讨论】:

【参考方案2】:

你放了不需要的标签。

backgroundColor: "#red !important"backgroundColor: "red !important"

【讨论】:

谢谢,虽然这也不起作用 也许你会以不同的方式创建你的组件? 你有什么建议? 添加了另一个回复【参考方案3】:
import React from "react";

export default function Main() 
  return ( 
    <div>
      <Container>
          <List/>
    </Container>
  </div>


function List() 
  return ( 
   <div style= backgroundColor: "#75e936", height: "150px", width: "150px" >
     this is a list
   </div>


function Container(props) 
  return( 
  <div  style= backgroundColor: "#94e49d38", height: "400px", width: "100vw-10px" >
    this is container
    props.children
  </div>
 )

【讨论】:

【参考方案4】:

通过重构你的代码,我找到了这个解决方案:

export default function Main() 
  return (
    <div>
      <Container>
        <List></List>
      </Container>
    </div>
  );


function List() 
  return (
    <div style= backgroundColor: "red", height: "150px", width: "150px" >
      this is a list
    </div>
  );


function Container(props) 
  return (
    <div
      style=
        backgroundColor: "#94e49d38",
        height: "400px",
        width: "100vw-10px"
      
    >
      props.children
    </div>
  );

通过传递 props.children 而不是 innerHtml 并在红色之前删除“#”,这可以正常工作,请参阅 sandbox

【讨论】:

以上是关于React Js - 在组件上设置 innerHTML 样式 - 不起作用 - 父样式覆盖子样式的主要内容,如果未能解决你的问题,请参考以下文章

在React.js应用上从firebase中获取和显示图片。

无法在服务器端 Next.js 上导入 React 组件

在 React.js 中有条件地设置 html 属性

如何在 React 组件上设置组件默认道具

标记组件未显示在 React JS 中的 Google 地图上

如何在react js中的onclick事件上隐藏和显示路由器组件