需要添加对组件的渲染方法的引用。 addComponentAsRefTo(...)

Need to add a reference to a component's render method. addComponentAsRefTo(...)

我相信我理解以下错误,但我不完全理解解决方案。

Uncaught Error: 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

import Modal from 'react-bootstrap-modal';
//import MyCustomObject from './MyCustomObject';
import ReactTelInput from 'react-telephone-input';

...
render(){
    return (
        <Modal show={this.props.showModal}>
            <Modal.Header>
                <Modal.Title>This is a heading </Modal.Title>
            </Modal.Header>
            <Modal.Body>
                    <ReactTelInput
                        defaultCountry="us"
                        flagsImagePath='../../images/flags.png'
                        onChange={this.handleInputChange}
                        onBlur={this.handleInputBlur}
                    /> // was previously <MyCustomObject/>
            </Modal.Body>
            <Modal.Footer>
                <Button onClick={this.props.changeModal}>Close</Button>
            </Modal.Footer>
        </Modal>
    );
 }

我的理解是,由于模态框无法识别 MyCustomObject,因此它不知道如何呈现它。那么,我该如何解决这个问题呢?有没有办法直接将 MyCustomObject 添加到 Modal 对象中?我的下一个想法是创建我自己的模式 class,扩展 react-bootstrap-modal,然后简单地从 MyCustomObject 导入这个扩展,但这也没有用。

那么,我怎样才能在像 react-bootstrap-modal 这样的东西中渲染我自己的对象?

这个问题很难搞清楚,因为我用的是facebook原版的react实现方式。在我的 index.cshtml 文件中,我有:

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.3.2/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/remarkable/1.7.1/remarkable.min.js"></script>

所以,react 是通过节点模块加载一次,一次是在这里。这很难弄清楚,因为我在技术上确实通过节点模块做出了一次反应。将它加载到 cshtml 中让我很伤心。

因此,我还必须添加到我的 webpack.config 文件中才能正确加载反应并从我的 cshtml 中删除脚本。

loaders: [
    {
        test: /.jsx?$/,
        loader: 'babel-loader',
        exclude: /node_modules/,
        query: {
            presets: ['es2015', 'react']
        }
    }