在click.js

时间:2015-04-22 13:27:35

标签: javascript reactjs

我是新手,我正在尝试在onClick上呈现一个新元素:

      var LoginButton = React.createClass({
       ..............
       ..............
      clickHandle : function() {
        this.rememberMe = {
            active: localforage.getItem('rememberMe', function (err, key) {
                return key;
            })
        };
        if (this.rememberMe.active == true || this.rememberMe.active == 'checked')
        {
            document.getElementById('loginForm').submit();
        }
        else {
            React.render(<wantToRemember />, document.getElementById('loginbuttonhere'));
        }
        return this.rememberMe.active;

    },

这是应该出现的元素:

var wantToRemember = React.createClass({
        getInitialState : function () {
            return {
                position: 'absolute',
                display: 'block',
                top: '20px',
                width: '100px',
                height: '100px'
            }
        },

        render : function () {
            return (
                    <div className="rememberPopup" style={this.state}>
                        <div className="row">
                            <div className="staylogin">
                                <div className="col-md-4">
                                    <label for="checkbox">Angemeldet bleiben</label>
                                </div>
                                <div className="col-md-1">
                                    <input type="checkbox" id="checkbox" name="remember" />
                                    </div>
                                </div>
                            </div>
                    </div>
            );
        }
    });

但它没有出现,而是反应呈现这个html:

<wanttoremember data-reactid=".1"></wanttoremember>

我很确定我做了一些非常基本的错误,但无法弄清楚是什么。是不是可以这样调用不同的元素?

2 个答案:

答案 0 :(得分:10)

您的react.js组件名称以小写字母开头,应以大写字母开头:var WantToRemember = React.createClass(...)React.render(<WantToRemember />,...

JSX编译器要求组件名称以大写字母开头(参见jsx docs on this):

  

要渲染React Component,只需创建一个以大写字母开头的局部变量:

var MyComponent = React.createClass({/*...*/});
var myElement = <MyComponent someProperty={true} />;
React.render(myElement, document.getElementById('example'));

答案 1 :(得分:2)

您应该将React元素传递给React.render而不是标记本身,如下所示:

React.render(
  React.createElement(wantToRemember)
);