想要在单击IconFont后打开一个对话框窗口

时间:2017-10-10 13:24:44

标签: javascript reactjs onclick icons action

我正在与React合作并且对它很新。我有一个包含一堆FontIcons的页面。我希望用户点击一个图标并弹出一个对话框。我在对话框http://www.material-ui.com/#/components/dialog上找到了相关信息。我还没有找到关于如何使onclick动作呈现对话框组件的任何内容。

我知道我需要在这里添加一些内容..

<a style={{position: 'absolute', bottom: 0, right: 0, cursor: 'pointer'}} onTouchTap={() => manageBookmark(parsedParams, this.props.documentRdxDoc.acm, this.props.documentRdxDoc.docTitle)}>
<Tooltip label='Manage Bookmark' position='right'>
<FontIcon className='material-icons' style={{color: 
 appConfig.globalFontColor}} tooltip="Notifications">star</FontIcon>
</Tooltip>
</a>

1 个答案:

答案 0 :(得分:0)

您需要自己创建对话框组件,然后在单击FontIcon时显示它(使用onClick属性)。

可以使用组件状态对象跟踪对话框状态,并通过处理程序方法进行修改。

以下是基于文档站点的示例:

export default class DialogButtonSample extends React.Component {
  state = {
    open: false,
  };

  handleOpen = () => {
    this.setState({open: true});
  };

  handleClose = () => {
    this.setState({open: false});
  };

  render() {
    const actions = [
      <FlatButton
        label="Cancel"
        primary={true}
        onClick={this.handleClose}
      />,
      <FlatButton
        label="Submit"
        primary={true}
        disabled={true}
        onClick={this.handleClose}
      />,
    ];

    return (
        <div>
            <a style={{position: 'absolute', bottom: 0, right: 0, cursor: 'pointer'}} onTouchTap={() => manageBookmark(parsedParams, this.props.documentRdxDoc.acm, this.props.documentRdxDoc.docTitle)}>
                <Tooltip label='Manage Bookmark' position='right'>
                    <FontIcon className='material-icons' style={{color: appConfig.globalFontColor}} tooltip="Notifications" onClick={this.handleOpen}>star</FontIcon>
                </Tooltip>
                <Dialog
                  title="Dialog With Actions"
                  actions={actions}
                  modal={false}
                  open={this.state.open}
                  onRequestClose={this.handleClose}
                >
            </a>
        </div>
    );
  }
}