React渲染不适用于createElement

Pav*_*ine 5 javascript reactjs

我的简单组件:

var AddProductForm = React.createClass({
    render: function(){
        return(
            <form >
                <input type='text' placeholder='lablbalbalbal'/>
            </form>
        )
    }
})
Run Code Online (Sandbox Code Playgroud)

我想通过onClick"渲染"某个确定div中的第一个组件的第二个组件:

var HeaderAction = React.createClass({
    render: function(){
        return(
            <button type="button" onClick={this.handleClick}  className="btn border-slate text-slate-800 btn-flat"><i className={this.props.icon + " position-left"}></i>{this.props.name}</button>
        )
    },
    handleClick: function(){
        var component = React.createElement(this.props.action.component);
        ReactDOM.render( component, document.getElementById('content'));
    }
})
Run Code Online (Sandbox Code Playgroud)

当我单击"HeaderAction"组件时,会发生错误:

未捕获的不变违规:标记无效:

来自我的'组件'的console.log():

Object {$$typeof: Symbol(react.element), type: "<AddProductForm/>", key: null, ref: null, props: Object…}
$$typeof: Symbol(react.element)
_owner: null
_self: null
_source: null
_store: Object
key: null
props: Object
ref: null
type: "<AddProductForm/>"
__proto__: Object
Run Code Online (Sandbox Code Playgroud)

如果在渲染调用中我改变' component'for" <AddProductForm/>"它可以正常工作,但是在渲染之前没有使用createElement来实例化对象.

wal*_*ith 4

var AddProductForm = React.createClass({
    render: function(){
        return(
            <form >
                <input type='text' placeholder='lablbalbalbal'/>
            </form>
        )
    }
})

var HeaderAction = React.createClass({
    render: function(){
        return(
            <button type="button" onClick={this.handleClick}</button>
        )
    },
    handleClick: function(){
        var component = React.createElement(AddProductForm);
        ReactDOM.render( component, document.getElementById('content'));
    }
})
var mount = document.getElementById('container');
ReactDOM.render(React.createElement(HeaderAction), mount)
Run Code Online (Sandbox Code Playgroud)

我没有给你答案,但这似乎有效。我不知道this.props.action.component你的情况是什么。我创建了一个小小提琴。也许我们可以解决这个问题。https://jsfiddle.net/walkerrsmith/htaca7fa/

  • 沃克是正确的。`React.createElement` 可以接受一个普通元素标签的字符串,或者react组件的类对象。https://facebook.github.io/react/docs/glossary.html (3认同)