我刚刚升级到 React Bootstrap v. 0.27.1、React v. 0.14.0 和 React Router v. 1.0.0-rc3,现在当我使用某些 React Bootstrap 组件时,我遇到了Invariant Violation 。
未捕获的错误:不变违规:addComponentAsRefTo(...):只有 ReactOwner 可以有 refs。您可能正在向未在组件
render
方法中创建的组件添加 ref,或者您加载了多个 React 副本(详细信息:https ://fb.me/react-refs-must-have-owner )。
具体来说,我在使用<Input>
and<Nav>
组件时会看到这一点。所以我得到以下行为。
// Does NOT work.
// --------------
<Navbar>
<Nav bsStyle="pills" activeKey={1}>
<NavItem eventKey={1} href="/">Home</NavItem>
</Nav>
</Navbar>
// Works
// -----
<Navbar>
<ul className="nav nav-pills">
<NavItem eventKey={1} href="/">Home</NavItem>
</ul>
</Navbar>
如您所见,切换<Nav>
到其常规 Bootstrap 标记可以解决问题。当我添加一个<Input>
组件时也是如此。可能还有其他组件会导致故障,但我只将其范围缩小到这两个。
无论如何,我无法弄清楚为什么这些组件会发生这种情况而不是其他组件,任何帮助将不胜感激。