【问题标题】:How to pass Material-UI FlatButton CSS into other Button component如何将 Material-UI FlatButton CSS 传递给其他 Button 组件
【发布时间】:2017-07-29 10:23:50
【问题描述】:

我在我的网站 (https://github.com/mathieudutour/react-progress-button) 中使用了一个加载按钮对象,我正在尝试将 Material-UI FlatButton CSS 传递给它,以便它看起来与 FlatButton 相同。但是,我不确定如何执行此操作。

import ProgressButton from 'react-progress-button'

const App = React.createClass({
  getInitialState () {
    return {
      buttonState: ''
    }
  },

  render () {
    return (
      <div>
        <ProgressButton onClick={this.handleClick} state={this.state.buttonState}
style={//flat button CSS goes here.....}>
          Go!
        </ProgressButton>
      </div>
    )
  },

  handleClick () {
    this.setState({buttonState: 'loading'})
    // make asynchronous call
    setTimeout(() => {
      this.setState({buttonState: 'success'})
    }, 3000)
  }
})

感谢您的帮助。

【问题讨论】:

    标签: javascript css reactjs material-ui


    【解决方案1】:

    您可以创建一个不可见的平面按钮并使用以下方式获取样式:

    <FlatButton id="mock1"/> 
    let flatButtonStyle = window.getComputedStyle(document.getElementById('mock1'));
    

    然后将其分配给&lt;ProgressButton&gt;。您可能需要稍微修改 CSS 样式对象,因为它会返回所有计算出的样式。

    <ProgressButton onClick={this.handleClick} state={this.state.buttonState} style={this.flatButtonStyle}>
    

    例如在您的代码中 从 'react-progress-button' 导入 ProgressButton

    const App = React.createClass({
      getInitialState () {
        return {
          buttonState: ''
        }
      },
    
      render () {
        let flatButtonStyle = window.getComputedStyle(document.getElementById('mock1'));
        return (
          <div>
            <FlatButton id="mock1"/>
            <ProgressButton onClick={this.handleClick} state={this.state.buttonState}
    style={this.flatButtonStyle}>
              Go!
            </ProgressButton>
          </div>
        )
      },
    
      handleClick () {
        this.setState({buttonState: 'loading'})
        // make asynchronous call
        setTimeout(() => {
          this.setState({buttonState: 'success'})
        }, 3000)
      }
    })
    

    这应该给你一个大致的想法。您必须稍微修改代码才能使其正常工作。

    【讨论】:

    • 谢谢。您认为您可以将您的代码放入我在 OP 中编写的代码中吗?我不确定把它放在哪里。谢谢。
    • 我收到一条错误消息“Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not type 'Element'
    • 如果您对性能感到好奇,请避免使用getComputedStyle
    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 2018-11-24
    • 2021-01-23
    • 2021-05-30
    • 2019-03-22
    • 2021-05-19
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多