【问题标题】:Render multiple widget React components渲染多个小部件 React 组件
【发布时间】:2019-01-21 11:32:48
【问题描述】:

我想多次在 html 中呈现小部件。 我有 3 个 id 相同但属性不同的 div,我想在页面上渲染我的反应组件 3 次。现在我只得到第一个组件。

HTML:

<div id="myapp" att="1"></div>
<!-- Something else -->
<div id="myapp" att="2"></div>
<!-- Something else -->
<div id="myapp" att="3"></div>
<script type="text/javascript" src="index.js"></script>

index.js

const container = document.getElementById('myapp');
ReactDOM.render(
 <App
  att={container.getAttribute('att')}
 />,
 container,
);

您有什么建议我如何将我的组件渲染三次?

【问题讨论】:

  • 您可以在 html 页面中只使用一个 id,getElementById 会给出第一个。

标签: javascript reactjs components react-component


【解决方案1】:

您的 App 组件将包含您想要呈现的组件。

所以在 App.js 中你会有这样的东西,你可以使用 props 将属性传递给 div

const widgetOne = props => (
  <div att={props.attribute}>
    <h1>WidgetTwo</h1>
  </div>
);

const widgetTwo = props => {
  <div att={props.attribute}>
    <h1>WidgetTwo</h1>
  </div>;
};

const widgetThree = () => {
  <div>
    <h1>WidgetThree</h1>
  </div>;
};

function App() {
  return (
    <div className="App">
      <widgetOne att={1} />
      <widgetTwo att={2} />
      <widgetThree />
    </div>
  );
}

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

您的 html 将有一个 div,App 组件将像这样连接到 &lt;div id="root"&gt;&lt;/div&gt;

【讨论】:

  • 感谢您的回答,我的最终目标是将该组件动态多次嵌入到不同的页面中。所以我想使用那些 div-s,因为它取决于父页面将在我的组件中显示多少次。
  • 对,你可以用 React 做到这一点。该组件正在呈现正常的 html。
  • 对不起,我指的是不同的网站,而不是页面。例如,我的组件是一个类似 facebook 的按钮,我想将它嵌入到不同的网站中,例如在 wordpress 页面中,我只从我的服务器加载我的组件。我的问题是,如果我在具有相同 id 的页面上放置很多“喜欢的按钮”,我只会得到第一个组件。
猜你喜欢
  • 1970-01-01
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 2022-01-25
  • 2020-06-13
  • 2018-02-17
相关资源
最近更新 更多