在React material-ui上显示对话框

时间:2015-08-21 20:00:50

标签: javascript reactjs material-ui

我使用material-ui的Dialog component作为我的React应用程序。如何将组件设置为变量,以便我可以调用onShow()方法?

2 个答案:

答案 0 :(得分:7)

添加ref="dialog"组件时,只需添加一个引用(例如<Dialog ref="dialog" title="..." actions="..."> dialog content </Dialog> ):

this.refs.dialog.onShow(...)

然后,您可以使用googleMap.getCameraPosition().target从您的所有者组件代码中引用它。

Dialog component页面实际上在幕后使用引用,正如您从source code中看到的那样。

答案 1 :(得分:1)

我建议阅读Dan Abramov's answer如何在React中实现模态。

要使用material-ui对话框,您可以使用以下内容替换其示例中的 DeletePostModal

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)