Я использую v1.1.0 material-ui в React 16.3.2. Я пытаюсь создать целевую страницу, похожую на Витрина - местная статистика
где диалоговое окно имеет непрозрачность (Найти отчуждение права выкупа). Я пытаюсь использовать компонент PaperProps для диалога, описанный здесь Документ диалога
Вот компонент, который я создал, чтобы попытаться это сделать.
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import Dialog from '@material-ui/core/Dialog';
import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import DialogTitle from '@material-ui/core/DialogTitle';
import ForwardIcon from '@material-ui/icons/Forward';
import Input from '@material-ui/core/Input';
import FormControl from '@material-ui/core/FormControl';
import Slide from '@material-ui/core/Slide';
const styles = theme => ({
dialogPaper: {
opacity: 0.5,
border: '#FF0000 1px solid',
},
button: {
margin: '30px'
}
});
function Transition(props) {
return <Slide direction = "up" {...props} />;
}
class SignInDialog extends React.Component {
state = {
open: false,
username: ''
};
handleClickOpen = () => {
this.setState({ open: true });
};
handleClose = () => {
this.setState({ open: false });
};
handleChangeEvent = name => event => {
this.setState({
[name]: event.target.value,
});
};
render() {
const { classes } = this.props;
return (
<div>
<Button variant = "fab" color = "primary" aria-label = "add" className = {classes.button} onClick = {this.handleClickOpen}>
<ForwardIcon />
</Button>
<Dialog
PaperProps = {styles.dialogPaper}
open = {this.state.open}
TransitionComponent = {Transition}
onClose = {this.handleClose}
aria-labelledby = "form-dialog-title"
>
<DialogTitle id = "form-dialog-title">WELCOME</DialogTitle>
<DialogContent>
<p>SIGN IN</p>
<FormControl className = {classes.formControl}>
<Input
value = {this.state.searchString}
onChange = {this.handleChangeEvent('search')}
id = "siginin-input"
placeholder = "Enter your username"
/>
</FormControl>
</DialogContent>
<DialogActions>
<Button onClick = {this.handleClose} color = "primary">
Cancel
</Button>
<Button onClick = {this.handleClose} color = "primary">
Continue
</Button>
</DialogActions>
</Dialog>
</div>
);
}
}
SignInDialog.propTypes = {
classes: PropTypes.object.isRequired,
};
export default withStyles(styles)(SignInDialog);
Я не мог понять, как заставить Dialog принимать стили. Что нужно для работы PaperProps?





Если вы хотите использовать PaperProps, вы должны указать реквизиты Paper, для которых вы применяете стиль.
<Dialog
PaperProps = {{ classes: {root: classes.dialogPaper } }}
/>Вы также можете использовать свойство classes и переопределить стиль
<Dialog
classes = {{paper:classes.dialogPaper}}
/>Правильный способ переопределить бумажные реквизиты - использовать classNames
<Dialog
PaperProps = {{ className: classNames(classes.dialogPaper) }}/>
Вам действительно не нужно использовать classNames, если у вас нет нескольких классов или условных классов.
спасибо @siva_seeker. да, это работает для стилизации диалогового окна, и я могу это использовать. По-прежнему было бы интересно узнать, как использовать PaperProps, поскольку кажется, что он предназначен для выполнения аналогичной функции - если я не ошибаюсь.