在 react.js 中呈现新元素 onClick
Render new element onClick in react.js
我是 React 新手,正在尝试在点击时呈现新元素:
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>
我很确定我做错了一些非常基本的事情,但无法弄清楚是什么。不可以这样调用不同的元素吗?
您应该将 React 元素传递给 React.render 而不是标签本身,如下所示:
React.render(
React.createElement(wantToRemember)
);
您的 react.js
组件名称以小写字母开头,应该以大写字母开头:var WantToRemember = React.createClass(...)
和 React.render(<WantToRemember />,...
.
JSX 编译器要求组件名称以大写字母开头(参见 jsx docs on this):
To render a React Component, just create a local variable that starts with an upper-case letter:
var MyComponent = React.createClass({/*...*/});
var myElement = <MyComponent someProperty={true} />;
React.render(myElement, document.getElementById('example'));
我是 React 新手,正在尝试在点击时呈现新元素:
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>
我很确定我做错了一些非常基本的事情,但无法弄清楚是什么。不可以这样调用不同的元素吗?
您应该将 React 元素传递给 React.render 而不是标签本身,如下所示:
React.render(
React.createElement(wantToRemember)
);
您的 react.js
组件名称以小写字母开头,应该以大写字母开头:var WantToRemember = React.createClass(...)
和 React.render(<WantToRemember />,...
.
JSX 编译器要求组件名称以大写字母开头(参见 jsx docs on this):
To render a React Component, just create a local variable that starts with an upper-case letter:
var MyComponent = React.createClass({/*...*/});
var myElement = <MyComponent someProperty={true} />;
React.render(myElement, document.getElementById('example'));