reactjs - reactjs如何隐藏元素
问题描述
所以我正在开发一个应用程序,我需要隐藏 Userform 组件,直到他们单击作为登录组件一部分的注册按钮之后。这可能是一个简单的问题,但我很难回答。
这是我的 app.js
import React from 'react';
import './App.css';
import UserForm from './components/UserForm';
import Login from './components/Login.js';
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
display: 'register',
acc: null
}
this.setAppState = this.setAppState.bind(this);
}
setAppState(event) { this.setState(event) }
render() {
const { display } = this.state;
switch(display) {
case 'register':
return <div className="App">
<UserForm
setAppState={this.setAppState}
/>
</div>
case 'login':
return <div className="App">
<Login
setAppState={this.setAppState}
/>
</div>
default:
}
}
}
解决方案
render 函数实际上需要一个返回值,即使它只是 null。所以我会考虑重构你的应用程序总是返回一些东西。我会在渲染功能之外有开关,并有这样的东西。
const switchApp(display) => {
switch(display) {
case 'register':
return <UserForm
setAppState={this.setAppState}
/>
case 'login':
return <Login
setAppState={this.setAppState}
/>
default:
return null;
}
}
render() {
const { display } = this.state;
if(!display){
return null;
}
return (
<div className="App">
{ switchApp(display) }
</div>
)
}
推荐阅读
- django - 如何在权限自定义装饰器中发送 HttpResponse?
- database - 我应该使用什么软件来进行图形分布式存储和处理?
- java - 在 Oreo 上单击带有 EditText 的 FAB 时出现 IndexOutOfBoundsException
- c# - 更改日期类型为 ASP.NET 的文本框中的文本
- yii2 - Yii2依赖下拉列表不起作用
- javascript - 更改另一个 iframe javascript 中的 iframe 中的 scr
- mysql - MySQL 结合选择总和和选择查询
- javascript - 从平面对象创建键:值对象
- xml - 满足条件时复制、删除和更改元素的值
- java - 使用 byte-buddy 创建注释,但我的代码找不到注释