我想使用打字稿在反应中重现grid from material-ui。可以在线观看演示here。
我已将示例调整为与打字稿一起使用,以使我的demo.tsx看起来像:
import * as React from 'react';
import { withStyles } from '@material-ui/core/styles';
import Grid from '@material-ui/core/Grid';
import FormLabel from '@material-ui/core/FormLabel';
import FormControlLabel from '@material-ui/core/FormControlLabel';
import RadioGroup from '@material-ui/core/RadioGroup';
import Radio from '@material-ui/core/Radio';
import Paper from '@material-ui/core/Paper';
import { GridSpacing } from '@material-ui/core/Grid';
import { WithStyles } from "@material-ui/core/styles/withStyles";
const styles = (theme: any) => ({
root: {
flexGrow: 1,
},
paper: {
height: 140,
width: 100,
},
demo: {
height: 140,
width: 100,
},
control: {
padding: theme.spacing.unit * 2,
},
});
class Demo extends React.Component<WithStyles<typeof styles>> {
state = {
spacing: '16',
};
handleChange = (key: any) => (event: any, value: any) => {
this.setState({
[key]: value,
});
};
render() {
const { classes } = this.props;
const { spacing } = this.state;
return (
<Grid container className={classes.root} spacing={16}>
<Grid item xs={12}>
<Grid container className={classes.demo} justify="center" spacing={Number(spacing) as GridSpacing}>
{[0, 1, 2].map(value => (
<Grid key={value} item>
<Paper className={classes.paper} />
</Grid>
))}
</Grid>
</Grid>
<Grid item xs={12}>
<Paper className={classes.control}>
<Grid container>
<Grid item>
<FormLabel>spacing</FormLabel>
<RadioGroup
name="spacing"
aria-label="Spacing"
value={spacing}
onChange={this.handleChange('spacing')}
row
>
<FormControlLabel value="0" control={<Radio />} label="0" />
<FormControlLabel value="8" control={<Radio />} label="8" />
<FormControlLabel value="16" control={<Radio />} label="16" />
<FormControlLabel value="24" control={<Radio />} label="24" />
<FormControlLabel value="32" control={<Radio />} label="32" />
<FormControlLabel value="40" control={<Radio />} label="40" />
</RadioGroup>
</Grid>
</Grid>
</Paper>
</Grid>
</Grid>
);
}
}
export default withStyles(styles)(Demo);
正如您在live demo中所看到的,它看起来与原始javascript示例不同。这三个盒子不是水平对齐的,而是垂直堆叠的。我是否缺少某些特定于打字稿的内容?
干杯!