简体   繁体   English

React-使用同一类渲染多个组件-不变违规

[英]React - render multiple components using same class - Invariant Violation

I'm new to React, I'm trying to declare a class and use it to render multiple div in different renders, can you please let me know if something is wrong with my approach? 我是React的新手,我正在尝试声明一个类并使用它在不同的渲染中渲染多个div,请问如果我的方法有问题,可以告诉我吗?

I'm getting an Invariant Violation on the second render 我在第二个渲染中遇到了不变违规

codepen example 代码笔示例

Class

class ShoppingList extends React.Component {
    render() {
    return (
    <div className="shopping-list">
        <h1>Shopping List for {this.props.name}</h1>
        <ul>
            <li>Instagram</li>
            <li>WhatsApp</li>
            <li>Oculus</li>
        </ul>
    </div>
    );
    }
    }

Render 给予

ReactDOM.render(
    <ShoppingList name="Mark" />,
    document.getElementById('cId1'));

    ReactDOM.render(
    <ShoppingList name="Mark" />,
    document.getElementById('cId2'));

And in the HTML 并在HTML中

<div id="id01">Hello World!</div><br /><br />
<div id="cId1" /><br /><br />
<div id="cId2" /><br /><br />

Firstly HTML doesn't use JSX syntax. 首先,HTML不使用JSX语法。 If you render a React class somehow to an HTML element, you have to use valid child HTML syntax. 如果您以某种方式将React类呈现给HTML元素,则必须使用有效的子HTML语法。

Change: 更改:

<div id="cId1" />
<div id="cId2" />

To: 至:

<div id="cId1"></div>
<div id="cId2"></div>

https://codepen.io/trdunya/pen/PLPPbM?editors=1011 https://codepen.io/trdunya/pen/PLPPbM?editors=1011

Also; 也;

You can create DIVs which are same class names in your HTML file. 您可以在HTML文件中创建与类名称相同的DIV。

<div class="myItem"></div>
<div class="myItem"></div>


var matched = document.querySelectorAll('.myItem');

matched.forEach(function(item)
{
  ReactDOM.render(
    <ShoppingList name="Mark" />,
    item
  );
});

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

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