Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在MaterialUI中进行样式化的惯用方法是什么?_Reactjs_Styles_Material Ui - Fatal编程技术网

Reactjs 在MaterialUI中进行样式化的惯用方法是什么?

Reactjs 在MaterialUI中进行样式化的惯用方法是什么?,reactjs,styles,material-ui,Reactjs,Styles,Material Ui,有几种方法可以在材质UI中进行样式设置 使用makeStyles: 第二种方法是,我可以为每个单独的组件输入一个特殊的输入。例如: let props: MuiBoxProps = { mb: '1px' } 类型推断可用于查看编译错误 但是,此方法不适用于makeStyles,因为其返回类型始终为cssprroperties 然而,在第一种情况下,我可以通过添加道具在内部设置它们的样式 因此,总而言之: 特定组件不可能进行类型推断。可以批量应用道具 可以对特定组件进行类型推断。无法批量

有几种方法可以在材质UI中进行样式设置

  • 使用
    makeStyles
  • 第二种方法是,我可以为每个单独的组件输入一个特殊的输入。例如:

    let props: MuiBoxProps = {
       mb: '1px'
    }
    
    类型推断可用于查看编译错误

    但是,此方法不适用于
    makeStyles
    ,因为其返回类型始终为
    cssprroperties

    然而,在第一种情况下,我可以通过添加道具在内部设置它们的样式

    因此,总而言之:

  • 特定组件不可能进行类型推断。可以批量应用道具

  • 可以对特定组件进行类型推断。无法批量应用道具


  • 什么是官方建议?

    事实上,你选择哪种方式并不重要,因为两者都在官方文件中。问题在于你对哪种方法或方式感到满意

    但是,是的,我认为最好的方法是
    使用样式
    ,这也是我在专业开发代码中使用的

    以下是一个例子:

    import React from 'react';
    import PropTypes from 'prop-types';
    import { withStyles } from '@material-ui/core/styles';
    import Button from '@material-ui/core/Button';
    
    const styles = {
      root: {
        background: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)',
        border: 0,
        borderRadius: 3,
        boxShadow: '0 3px 5px 2px rgba(255, 105, 135, .3)',
        color: 'white',
        height: 48,
        padding: '0 30px',
      },
    };
    
    function HigherOrderComponent(props) {
      const { classes } = props;
      return <Button className={classes.root}>Higher-order component</Button>;
    }
    
    HigherOrderComponent.propTypes = {
      classes: PropTypes.object.isRequired,
    };
    
    export default withStyles(styles)(HigherOrderComponent);
    
    从“React”导入React;
    从“道具类型”导入道具类型;
    从“@material ui/core/styles”导入{withStyles}”;
    从“@material ui/core/Button”导入按钮;
    常量样式={
    根目录:{
    背景:“线性梯度(45度,Fe6B30%,FF8E53 90%),
    边界:0,
    边界半径:3,
    boxShadow:'0 3px 5px 2px rgba(255、105、135、3)',
    颜色:'白色',
    身高:48,
    填充:“0 30px”,
    },
    };
    功能高级命令组件(道具){
    常量{classes}=props;
    返回高阶分量;
    }
    HigherOrderComponent.propTypes={
    类:PropTypes.object.isRequired,
    };
    导出默认样式(样式)(高级命令组件);
    
    let props: MuiBoxProps = {
       mb: '1px'
    }
    
    import React from 'react';
    import PropTypes from 'prop-types';
    import { withStyles } from '@material-ui/core/styles';
    import Button from '@material-ui/core/Button';
    
    const styles = {
      root: {
        background: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)',
        border: 0,
        borderRadius: 3,
        boxShadow: '0 3px 5px 2px rgba(255, 105, 135, .3)',
        color: 'white',
        height: 48,
        padding: '0 30px',
      },
    };
    
    function HigherOrderComponent(props) {
      const { classes } = props;
      return <Button className={classes.root}>Higher-order component</Button>;
    }
    
    HigherOrderComponent.propTypes = {
      classes: PropTypes.object.isRequired,
    };
    
    export default withStyles(styles)(HigherOrderComponent);