【发布时间】:2019-01-14 20:23:40
【问题描述】:
我在ReactJs 中创建了一个名为MainPage 的主要组件(使用Material-UI)。
import React from 'react';
import Grid from '@material-ui/core/Grid';
import Button from '@material-ui/core/Button';
import CssBaseline from '@material-ui/core/CssBaseline';
import Card from '@material-ui/core/Card';
import CardContent from '@material-ui/core/CardContent';
import withStyles from '@material-ui/core/styles/withStyles';
const styles = theme => ({
card: {
minWidth: 350,
},
button: {
fontSize: '12px',
margin: theme.spacing.unit,
minWidth: 350
},
extendedIcon: {
marginRight: theme.spacing.unit,
}
});
class MainPage extends React.Component {
constructor() {
super();
}
render() {
const {
classes
} = this.props;
return ( <
React.Fragment >
<
CssBaseline / >
<
Grid container spacing = {
0
}
direction = "column"
alignItems = "center"
justify = "center"
style = {
{
minHeight: '100vh'
}
} >
<
form onSubmit = {
this.handleSubmit
} >
<
Card className = {
classes.card
} >
<
CardContent >
<
Grid item xs = {
3
} >
<
Button variant = "contained"
size = "medium"
color = "primary"
className = {
classes.button
}
type = "submit"
value = "single" >
ButtonA <
/Button> <
/Grid> <
Grid item xs = {
3
} >
<
Button variant = "contained"
size = "medium"
color = "primary"
className = {
classes.button
}
type = "submit"
value = "batch" >
ButtonB <
/Button> <
/Grid> <
/CardContent> <
/Card> <
/form> <
/Grid> <
/React.Fragment>
);
}
}
export default withStyles(styles)(MainPage);
我想在单击按钮时加载一个新组件(CompA 或 CompB,具体取决于单击了哪个按钮 - ButtonA 或 ButtonB)。新组件应该完全替换当前组件 - 我的意思是它应该加载到整个屏幕中(而不是按钮旁边的任何位置)。
我该怎么做?
更新:
我想替换 MainPage 组件,而不仅仅是在它上面渲染。
这就是我加载MainPage的方式:
index.js
import React from 'react';
import { render } from 'react-dom';
import MainPage from './components/MainPage';
const View = () => (
<div>
<MainPage/>
</div>
);
render(<View />, document.getElementById('root'));
【问题讨论】:
-
你的意思是当用户点击MainPage时被替换?还是只是在它上面渲染?
-
@0xc14m1z: 是的,正是 - 我想替换 MainPage!
-
渲染
MainPage的组件是什么?App之类的东西? -
@0xc14m1z:请看我的更新。我发布了一个代码来显示我如何加载
MainPage。 -
可以react-router 帮助您解决这个问题吗?
标签: javascript reactjs material-ui