Sto usando materiale-Dialog component per la mia applicazione React. Come posso impostare il mio componente su una variabile in modo da poter chiamare il metodo onShow()
?Mostra finestra di dialogo su React material-ui
5
A
risposta
5
Quando si aggiunge la componente Dialog
, è sufficiente aggiungere un ref ad esso (ref="dialog"
per esempio):
<Dialog ref="dialog" title="..." actions="...">
dialog content
</Dialog>
E poi si può fare riferimento a esso dal codice del componente proprietario utilizzando this.refs.dialog.onShow(...)
.
La pagina Dialog component utilizza effettivamente ref dietro le quinte, come potete vedere dal suo source code.
1
Si consiglia di leggere Dan Abramov's answer su come implementare una modale in React.
Per poter utilizzare il materiale di dialogo-ui è possibile sostituire il DeletePostModal nel suo esempio con il seguente:
import { deletePost, hideModal } from '../actions';
import React, {Component} from 'react';
import {connect} from "react-redux";
import {Button, Dialog, DialogActions, DialogTitle} from "material-ui";
import PropTypes from 'prop-types';
const DeletePostModal = ({ post, dispatch }) => (
<Dialog open={true}>
<DialogTitle>Delete post {post.name}?</DialogTitle>
<DialogActions>
<button onClick={() => {
dispatch(deletePost(post.id)).then(() => {
dispatch(hideModal());
});
}}>
Yes
</button>
<button onClick={() => dispatch(hideModal())}>
Nope
</button>
</DialogActions>
</Dialog>
)
export default connect(
(state, ownProps) => ({
post: state.postsById[ownProps.postId]
})
)(DeletePostModal)
'onShow' ora è deprecato: http://material-ui.com/#/components/dialog e opening dovrebbero essere gestiti tramite il puntello 'open' – TrySpace
In tutti gli esempi mostra un pulsante con una finestra di dialogo per lanciare cosa voglio lanciare nel modo in cui l'OP chiede E nascondere il pulsante di dialogo. . – landed