【发布时间】:2018-11-19 19:43:38
【问题描述】:
我目前正在使用 React 创建一个登录/注册模板,该模板在功能上模仿 groupon login。具体来说,我的目标是在i have an account 和i'm a new customer 之间切换时切换彩色边框。该模板在当今的开发中非常普遍,我见过许多编码不佳的解决方案,它们完全忽略了最佳实践。
我将首先说明最佳解决方案使用state。
然后我会创建以下内容(显然不完整):
<div className="wrapper">
<div className="login" />
<div className="register" />
</div>
然后我想给两个 div 一个状态和一个边框底部规范来渲染彩色边框。我看到的问题是如何最好地实现哪个处于活动状态的切换。
另一个思想实验是将所有内容硬编码到输入字段。然后,当用户点击I'M A NEW CUSTOMER 字段时,我所要做的就是为该组件设置一个活动状态,然后渲染。
同样,这个问题的重点是回答如何最好地实施这个登录/注册表单。顺便说一句,Groupon 给他们的展示组件一个 active 类。
编辑:正如 Sunny Wong 所指出的,并反映了我的假设,他的解决方案使用状态并通过我的组件实现如下:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
activeTab: "login"
};
}
handleActiveTab = name => event => {
this.setState({ activeTab: name });
};
render() {
const { activeTab } = this.state;
let joinComponent =
activeTab === "login" ? <LoginComponent /> : <RegisterComponent />;
return (
<div className="wrapper">
<div
onClick={this.handleActiveTab("login")}
className={classNames("login", {
active: activeTab === "login"
})}
>
Login
</div>
<div
onClick={this.handleActiveTab("register")}
className={classNames("register", {
active: activeTab === "register"
})}
>
Register
</div>
{joinComponent}
</div>
);
}
}
此外,该帖子被标记为too broad,但我针对的是特定主题/问题。总而言之,它们是:
具体来说,我的目标是切换彩色边框 在我有帐户和我是新客户之间切换。
回答如何最好地实施此登录/注册表
请参阅live version 以获取更多参考。
【问题讨论】:
标签: javascript css reactjs state