当我向我的应用程序添加对话框窗口组件时不起作用。我是新人,所以我有很多问题 这是我的对话框类:
/* eslint-disable react/no-multi-comp */
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import Avatar from '@material-ui/core/Avatar';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemAvatar from '@material-ui/core/ListItemAvatar';
import ListItemText from '@material-ui/core/ListItemText';
import DialogTitle from '@material-ui/core/DialogTitle';
import Dialog from '@material-ui/core/Dialog';
import PersonIcon from '@material-ui/icons/Person';
import AddIcon from '@material-ui/icons/Add';
import Typography from '@material-ui/core/Typography';
import blue from '@material-ui/core/colors/blue';
const emails = ['username@gmail.com', 'user02@gmail.com'];
const styles = {
avatar: {
backgroundColor: blue[100],
color: blue[600],
},
};
class SimpleDialog extends React.Component {
handleClose = () => {
this.props.onClose(this.props.selectedValue);
};
handleListItemClick = value => {
this.props.onClose(value);
};
render() {
const { classes, onClose, selectedValue, ...other } = this.props;
return (
<Dialog onClose={this.handleClose} aria-labelledby="simple-dialog-title" {...other}>
<DialogTitle id="simple-dialog-title">Set backup account</DialogTitle>
<div>
<List>
{emails.map(email => (
<ListItem button onClick={() => this.handleListItemClick(email)} key={email}>
<ListItemAvatar>
<Avatar className={classes.avatar}>
<PersonIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary={email} />
</ListItem>
))}
<ListItem button onClick={() => this.handleListItemClick('addAccount')}>
<ListItemAvatar>
<Avatar>
<AddIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="add account" />
</ListItem>
</List>
</div>
</Dialog>
);
}
}
SimpleDialog.propTypes = {
classes: PropTypes.object.isRequired,
onClose: PropTypes.func,
selectedValue: PropTypes.string,
};
const SimpleDialogWrapped = withStyles(styles)(SimpleDialog);
class SimpleDialogDemo extends React.Component {
state = {
open: false,
selectedValue: emails[1],
};
handleClickOpen = () => {
this.setState({
open: true,
});
};
handleClose = value => {
this.setState({ selectedValue: value, open: false });
};
render() {
return (
<div>
<Typography variant="subheading">Selected: {this.state.selectedValue}</Typography>
<br />
<Button onClick={this.handleClickOpen}>Open simple dialog</Button>
<SimpleDialogWrapped
selectedValue={this.state.selectedValue}
open={this.state.open}
onClose={this.handleClose}
/>
</div>
);
}
}
export default SimpleDialogDemo;
当我在我的主要调用此方法时,我有这个错误:
ERROR in ./SimpleDialog.jsx
Module build failed: SyntaxError: C:/Projekt/crew/crew-ui/SimpleDialog.jsx: Unexpected token (28:16)
26 |
27 | class SimpleDialog extends React.Component {
> 28 | handleClose = () => {
| ^
29 | this.props.onClose(this.props.selectedValue);
30 | };
31 |
@ ./main.js 11:20-49
@ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./main.js
有时当我在这个课程中添加一些其他组件时,开始工作。例如,当我添加textfield materia-ui组件时。请求帮助
在我的package.json中,我有:
"babel-loader": "^7.1.4",
我添加这个,因为当我看到这个错误时,人们写道我应该有这个。但这没有帮助。