不变量冲突:使用Link &表
Invariant Violation: findComponentRoot when using Link & Tables
我使用react-router
为我的路由。我有一个表,我希望行是可点击的。
所以我有:
<table className="table table-hover table-bordered" cellSpacing="0" width="100%">
<thead>
<tr>
<th>ID</th>
<th>GUID</th>
<th>Patch Name</th>
<th>Description</th>
<th>Creation Date</th>
</tr>
</thead>
<tbody>
{patches.map(function (patch) {
return (
<tr className="cursor-pointer">
<Link to="patch" params={{patchId:patch.id}}>
<td>{patch.id}</td>
<td>{patch.guid}</td>
<td>{patch.name}</td>
<td>{patch.description}</td>
<td>{moment(patch.creation_date).format('MMMM Do YYYY')}</td>
</Link>
</tr>
);
})}
</tbody>
</table>
单击一行后,得到
Error: Invariant Violation: findComponentRoot(…,.0.2.0.0.0.0.0.0.1.0.1.0.0):无法找到元素。这可能通常表示DOM被意外地改变了(例如,由浏览器)由于在使用表时忘记了a,嵌套标签如、
、或,或在父元素中使用非svg元素。试一试查看React ID为' '的元素的子节点。
如果我将<Link>
移动到<tr>
之前,即:
<Link to="patch" params={{patchId:patch.id}}>
<tr className="cursor-pointer">
<td>{patch.id}</td>
<td>{patch.guid}</td>
<td>{patch.name}</td>
<td>{patch.description}</td>
<td>{moment(patch.creation_date).format('MMMM Do YYYY')}</td>
</tr>
</Link>
那么它工作得很好,但表CSS完全混乱。这是怎么呢
<Link>
呈现<a>
元素,但<tr>
元素只接受<th>
或<td>
元素作为子元素。
对于<tbody>
和<table>
也是如此,它们只接受HTML元素的子集作为子元素。
你的浏览器会自动修复你的HTML。React不知道这种行为,当DOM结构与预期不匹配时,会抛出错误。正如错误所指出的,这通常发生在在呈现方法中输出无效的HTML结构时。
如果你想让整个<tr>
作为一个链接,你应该在每个表格单元格中呈现一个链接。
<tr className="cursor-pointer">
<td>
<Link to="patch" params={{patchId:patch.id}}>
{patch.id}
</Link>
</td>
<td>
<Link to="patch" params={{patchId:patch.id}}>
{patch.guid}
</Link>
</td>
{/* etc */}
</tr>
相关文章:
- 使用Plaid Link显示自定义用户名和密码模式对话框
- 使用 xPath(javascript, jquery) 从 url link 解析 html 页面
- 在jsView中使用html转换器在语法上是错误的:data-link=“html{:p roperty}”而不是dat
- 脚本,使用 addClass 和 link.attr 输入
- 如何使用 Javascript 中的 API 密钥正确请求 Google Link Shortener API 的 XM
- 当我在 Emberjs 中使用 {{link-to}} 中的 id 刷新 url 时,子出口变为空
- 使用javascript.link()方法打开弹出窗口
- Javascript在同一页面上使用# link打开选项卡
- 当使用$compile以编程方式创建指令时,如何调用link函数?
- VueJS和vue-router:使用v-link时,视图数据不会更新
- 将函数表达式存储在angularjs指令的link函数中,并通过ng-click使用它
- 使用link元素时,JavaScript是不加载的
- 在服务器端渲染的React组件中使用Link
- 使用.html#link突出显示网站部分
- 使用JSX时,无效的道具类型Link
- 在带有指令的link方法中使用独立的作用域变量
- 如何在struts 1.2中使用html:link传递html:text值
- 使用具有<wicket:link>
- 从 Vue 中的 V-Link 传递道具.js使用 Vue-router
- 如何在action.link中使用html输入标签?