我正在构建一个 Menu 组件,它呈现使用 react-router Link 组件创建的链接列表。
这是呈现菜单的每个项目的代码:
<li
style={{opacity: this.props.isDragging ? 0 : 1}}
className="list">
<Link to={ this.props.list.url }
activeClassName="active"
className={ this.props.owner && 'draggable'}>
<span>{ this.props.list.title }</span>
{ this.props.owner ?
<div className="list-controls">
<span className="glyphicon
glyphicon-pencil"
aria-hidden="true"
onClick={this.setEditMode.bind(this, true)}>
</span>
<span className="glyphicon
glyphicon-remove"
aria-hidden="true"
onClick={this.deleteList.bind(this)}></span>
</div> : null
}
</Link>
</li>;
菜单是动态的。这意味着导航到另一个 url 可能会使用不同的链接列表重新呈现菜单。问题是,当重新渲染菜单时,我得到以下异常:
Uncaught Error: Invariant Violation: findComponentRoot(..., .0.0.0.4.$12.0): Unable to find element. This probably means the DOM was unexpectedly mutated (e.g., by the browser), usually due to forgetting a '<tbody>' when using tables, nesting tags like '<form>, <p>, or <a>', or using non-SVG elements in an <svg>' parent. Try inspecting the child nodes of the element with React ID ``.
我检查了 .0.0.0.4.$12.0 元素是<a>
Link 组件在第一次渲染中生成的标签。
我还检查过,如果我不使用 Link 组件(例如,使用简单的<a>
标签),异常就会消失。有什么想法吗?
更新:当我开始使用 react-router-redux(以前的 redux-simple-router)时,显然出现了错误。