繁体   English   中英

反应-模态不变违反

[英]React - invariant violation on modal

我有一个带有类别下拉列表的模式。 选择类别时,将显示带有分类的下拉列表。 如果选择分类,则会呈现另一个组件。

第一次选择类别和分类时,效果很好。 但是,如果我想再次选择一个类别,则会出现以下错误:

Uncaught Error: Invariant Violation: findComponentRoot(..., .0.2.1.0.0.1.0.2.1.0.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 ``.

我查了一下,但是通常在使用<table>组件时会出现。 我没有使用<table>

模态代码如下:

  getInitialState: function() {
        return {categorySelected: false};
    },

    handleSelectCat: function(event)   {
        var index = event.target.value;
        this.setState({categorySelected: true});
        this.setState({classificationSelected: false});

        var classificationDesc = this.props.categories[index].classes.map(function (elem, index) {
            return <option value={index}><a href="#">{elem.description}</a></option>
        });

        this.setState({classificationDesc: classificationDesc});
    },

    handleSelectClass: function(event) {
        var index = event.target.value;
        this.setState({classificationSelected: true});
    },

    closeModal: function()  {
        this.setState({categorySelected: false});
        this.setState({classificationSelected: false});
    },

    render: function() {

        var categoryDesc = this.props.categories.map(function (elem, index) {
            return <option value={index}>{elem.description}</option>
        });

        return (

        <div id="newListModal" className="modal fade" role="dialog">
            <div className="modal-dialog">

                <div className="modal-content">
                    <div className="modal-header">
                        <button type="button" className="close" data-dismiss="modal">&times;</button>
                        <h4 className="modal-title">Create new list</h4>
                    </div>

                    <div className="modal-body">
                        <div>
                            <p>Select category</p>
                            <select class="form-control" onChange={this.handleSelectCat}>
                                {categoryDesc}
                            </select>
                            {this.state.categorySelected == true
                                ?
                                <div>
                                    <p>Select classification</p>
                                    <select class="form-control" onChange={this.handleSelectClass}>
                                        {this.state.classificationDesc}
                                    </select>
                                </div>
                                :
                                <div></div>}
                            {this.state.classificationSelected == true
                             ?
                                <ListAddition classification={this.props.data}/>
                             :
                                <div></div>
                            }
                        </div>
                    </div>

                    <div className="modal-footer">
                        <button type="button" className="btn btn-default" data-dismiss="modal" onClick={this.closeModal}>Close</button>
                    </div>
                </div>

            </div>
        </div>
        )
    }
  var classificationDesc = this.props.categories[index].classes.map(function (elem, index) {
        return <option value={index}><a href="#">{elem.description}</a></option>
    });

您在<option>内有一个<a>标记。 这不是标准的,浏览器可能会删除它与React vDOM冲突

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM