javascript - 没有 JSX 的条件渲染
问题描述
是否可以像下面这样进行条件渲染React.createElement
?
render() {
const isLoggedIn = this.state.isLoggedIn;
let button;
if (isLoggedIn) {
button = <LogoutButton onClick={this.handleLogoutClick} />;
} else {
button = <LoginButton onClick={this.handleLoginClick} />;
}
return (
<div>
<Greeting isLoggedIn={isLoggedIn} />
{button}
</div>
);
}
我试着这样做:
render() {
const isLoggedIn = this.state.isLoggedIn;
let button;
if (isLoggedIn) {
button = React.createElement("LogoutButton" { "onClick": this.handleLogoutClick }, null);
} else {
button = React.createElement("LogoutButton" { "onClick": this.handleLoginClick }, null);
}
return (
React.createElement("div", null, {button});
);
}
但它不起作用。我应该怎么办?
解决方案
改变
render() {
const isLoggedIn = this.state.isLoggedIn;
let button;
if (isLoggedIn) {
button = React.createElement("LogoutButton" { "onClick": this.handleLogoutClick }, null);
} else {
button = React.createElement("LogoutButton" { "onClick": this.handleLoginClick }, null);
}
return (
React.createElement("div", null, {button});
);
}
至
render() {
const isLoggedIn = this.state.isLoggedIn;
let button;
if (isLoggedIn) {
button = React.createElement(LogoutButton, { "onClick": this.handleLogoutClick }, null);
} else {
button = React.createElement(LogoutButton, { "onClick": this.handleLoginClick }, null);
}
return (
React.createElement("div", null, {button});
);
}
现在您的代码应该可以正常工作并查看此页面以供将来参考
推荐阅读
- django - 当我单击 A 链接向所有用户发送消息时,我的 Django 站点上出现 502 Bad Gateway
- python - 如何在python中的新行上打印数字而不用逗号分隔参数?
- algorithm - 使用 BFS 检测图中的循环
- amazon-web-services - SSL 证书自动化 | 让我们加密
- python - Python Pandas Dataframe - 基于 Groupby 和过滤条件的删除组
- google-apps-script - 函数取决于单元格
- flutter - 如何在没有上下文的情况下使用 Flutter 本地化?
- java - Spring JpaRepository 不适用于事务性
- python - 如何在特定字符之前测量字符串的长度
- kotlin - 纽贝印刷类型