【问题标题】:Should we use Material-UI with React [closed]我们应该在 React 中使用 Material-UI [关闭]
【发布时间】:2020-04-07 09:41:58
【问题描述】:

我正在尝试在 react 中设计一个登录页面,发现 material-ui,现在的问题是应该使用 Material-UI 吗?另外,在以下示例中,我如何将样式放在单独的文件中?我认为应该将其放入某个.css 文件中,如果是,那么如何将以下代码放入css 文件中:

import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import TextField from '@material-ui/core/TextField';

const useStyles = makeStyles(theme => ({
  root: {
    '& > *': {
      margin: theme.spacing(1),
      width: 200,
    },
  },
}));

export default function BasicTextFields() {
  const classes = useStyles();

  return (
    <form className={classes.root} noValidate autoComplete="off">
      <TextField id="standard-basic" label="Standard" />
      <TextField id="filled-basic" label="Filled" variant="filled" />
      <TextField id="outlined-basic" label="Outlined" variant="outlined" />
    </form>
  );
}

参考:https://codesandbox.io/s/material-demo-guyt6index.js

【问题讨论】:

    标签: javascript css reactjs material-ui


    【解决方案1】:

    您可以在您的BasicTextFields.jsx 旁边创建一个名为styles.jsx 的文件。在这种情况下,我不会将样式添加到 CSS 中。

    styles.jsx 中,您可以拥有以下内容:

    import { makeStyles } from '@material-ui/core/styles';
    
    const useStyles = makeStyles(theme => ({
      root: {
        '& > *': {
          margin: theme.spacing(1),
          width: 200,
        },
      },
    }));
    
    export default useStyles;
    

    然后只需按以下方式导入您的组件:

    import useStyles from './styles';
    
    export default function BasicTextFields() {
       const classes = useStyles();
    
       return (
           ...
       );
    }
    

    重要的是您需要在组件中使用const classes = useStyles()。如果你在外面使用你会得到Invalid hook call.错误信息。

    至少这是我在我的业余项目中所拥有的。我希望这会有所帮助!

    【讨论】:

    • 它给我错误错误:无效的挂钩调用。 Hooks 只能在函数组件的主体内部调用。这可能是由于以下原因之一: 1. 你可能有不匹配的 React 版本和渲染器(例如 React DOM) 2. 你可能违反了 Hooks 规则 3. 你可能有多个 React 副本同一个应用有什么想法吗?
    • 刚刚更新了我的回答为什么会发生这种情况,通常原因是在组件之外使用useStyles(),请在上面找到它。希望有帮助!
    • 我已经这样做了,但是技巧确实对我有用,然后我睡着想我必须卸载 npm 节点和其他东西并重新安装,但我不知道它是否会工作
    猜你喜欢
    • 2020-11-28
    • 2020-11-25
    • 1970-01-01
    • 2018-09-09
    • 2012-11-04
    • 1970-01-01
    • 2021-01-04
    • 2022-06-22
    相关资源
    最近更新 更多