javascript - Uncaught Error : Invariant Violation: findComponentRoot(. .., ...$110) : Unable to find element. 这可能意味着 DOM 意外发生了变化

标签 javascript reactjs

我在 React 中的嵌套循环做错了什么?我在谷歌上搜索了资料,没有找到合适的。你能帮我找出我理解错误的地方吗?

从图中可以看出,我有一个变量中的数据。它工作正常。但是当我添加一个不是来自这个 <tr> 的值时,出现错误!

    var TableBalls80 = React.createClass({
        render:function(){
            var rows = this.props.rows;
            var columnId = 0, trKey = 0, divKey = 0, td1stKey = 0;
            var td2ndKey = 100;
            return(
                    <table className='table table-bordered bg-success'>
                                <thead>
                                <tr className='danger'>
                                    {rows[0].row.map(function (element){
                                        columnId++;
                                        return (
                                        <th colSpan="2" key={columnId}>{columnId}</th>);
                                    })}
                                </tr>
                                </thead>
                                <tbody>
                                    {rows.map(function (rowElement){
                                        return (<tr key={trKey++}>
                                        {rowElement.row.map(function(ball){
                                            console.log('trKey:'+trKey+' td1stKey'+td1stKey+' ball.value:'+ball.value+' td2ndKey:'+td2ndKey+' ball.count:'+ball.count);
                                            return(<div key={divKey++}>
                                                <td className='info' key={td1stKey++}>{ball.value}</td><td key={td2ndKey++}>{ball.count}</td>
                                            </div>);
                                        })}
                                        </tr>);
                                    })}
                                </tbody>
                            </table>);
        }
    });

错误(取决于从另一个 <tr> 添加的项目):

Uncaught Error: Invariant Violation: findComponentRoot(..., .0.1.1.0.2.0.0.1.$0.$9.$109): >Unable to find element. This probably means the DOM was unexpectedly mutated (e.g., by the >browser), usually due to forgetting a when using tables, n......`.

最佳答案

所以问题是你正在创建一个像这样的虚拟 DOM 结构:

<tbody>
   <tr>
      <div>
         <td>...</td>
         <td>...</td>
      </div>
   </tr>
</tbody>

因为 <div/>不是 <tr> 的有效子项浏览器实际上创建了代表这个的 DOM:

<div> </div>
<table>
<tbody>
   <tr>
      <td>...</td>
      <td>...</td>
   </tr>
</tbody>
</table>

fiddle

当 React 开始更新时,它会查看 <tr>并想知道 <div> 在哪里去。相反,它找到了 <td>所以它会抛出一个错误。

关于javascript - Uncaught Error : Invariant Violation: findComponentRoot(. .., ...$110) : Unable to find element. 这可能意味着 DOM 意外发生了变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026399/

相关文章:

javascript - 如果我有一个包含在其他页面上的 nav_bar.html 文件,我如何显示哪个菜单项处于事件状态?

javascript - Web3 不将 web3.eth.Contract 视为构造函数

javascript - 如果没有选中复选框,则隐藏无序列表

android - 在 ubuntu 中运行 React Native 应用程序时出错

reactjs - 如何解决 Nextjs 上未找到 next-auth/client 模块的问题

javascript - 表单输入值验证

javascript - Javascript 中 url 的正则表达式

javascript - 无法在 React Native 中导入其他组件

javascript - 从子组件输入目标值

node.js - 在 AWS 中部署和运行 Docker