gpt4 book ai didi

javascript - React ref 不工作不变违规 : addComponentAsRefTo

转载 作者:行者123 更新时间:2023-11-28 02:53:24 25 4
gpt4 key购买 nike

我在向 React 组件添加 ref 时遇到问题。以下是错误消息。

invariant.js:39Uncaught Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's `render` method, or you have multiple copies of React loaded

研究表明这可能是原因,但似乎都不是问题。

Only a ReactOwner can have refs

这是我对 React 不熟悉的最可能原因。我有一个正在渲染的容器,然后一个选择元素被渲染到容器中。

代码

var React = require('react');

var first_container = React.createClass({
render: function() {
return (
<div id='first-container' className='jumbotron'>
<div className='row'>
<button type='button' className='btn btn-primary'>Submit Query</button>
</div>
</div>
);
}
});


var product_selections = React.createClass({
handleChange: function() {
console.log("hello");
},
componentDidMount: function (){
$(this.refs['product-select']).select2({
change: this.handleChange
});
},
render: function() {
return (
<div className='row'>
<br/>
<label htmlFor='product-dropdown'>
Product
<br/>
<select ref='product-select' className='js-example-basic-multiple js-states form-control' id='product-dropdown' multiple='multiple'>
</select>
</label>
</div>
);
}
});

You are trying to add a ref to an element that is being created outside of a component's render() function.

ref 是在 render 函数中定义的,所以这似乎不是问题所在。难道是因为这个组件正在被添加到另一个组件中?

Multiple Copies of React

npm ls | grep react

├─┬ react@15.2.1
├── react-addons@0.9.0
├── react-bootstrap@0.29.5 extraneous
├── react-dom@15.2.1
├─┬ reactify@0.15.2
│ ├─┬ react-tools@0.12.2

好像也没有重复包?关于这里可能发生的事情有什么想法吗?

最佳答案

我有一个类似的问题,并且能够通过不使用字符串引用来解决它。

好:

 <input ref={(input) => { this.textInput = input }} />

差:

 <input ref="textInput" />

在此处查看文档: https://facebook.github.io/react/docs/refs-and-the-dom.html

他们实际上说不要那样做:

“如果您以前使用过 React,您可能熟悉旧的 API,其中 ref 属性是一个字符串,例如“textInput”,并且 DOM 节点作为 this.refs.textInput 访问。我们建议不要这样做,因为字符串引用有一些问题,被认为是遗留问题,并且可能会在未来的某个版本中被删除。如果您当前正在使用 this.refs.textInput 访问引用,我们建议改用回调模式。”

关于javascript - React ref 不工作不变违规 : addComponentAsRefTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38315626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com