标签: material-ui

如何在类组件中使用 useMediaQuery

将函数用作组件时,您可以使用useMediaQuerymaterial-ui 中的钩子。然而,它没有告诉你如何在类中使用这个钩子。

所以我做了一些研究,发现你可以通过这样做在课堂上使用它:

import React from 'react';
import useMediaQuery from '@material-ui/core/useMediaQuery';

const withMediaQuery = (...args) => Component => props => {
  const mediaQuery = useMediaQuery(...args);
  return <Component mediaQuery={mediaQuery} {...props} />;
};

export default withMediaQuery;
Run Code Online (Sandbox Code Playgroud)

但是,当像这样将它添加到类时:

export default withStyles(styles)(withMediaQuery(Main));
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

index.js:1 Warning: Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it.
Run Code Online (Sandbox Code Playgroud)

我真的需要使用媒体查询,因为有些变量依赖于它们。这是我想使用媒体查询的类的渲染方法。

render() { …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs material-ui react-hooks

10
推荐指数
1
解决办法
6840
查看次数

如何拖放 Material-UI 卡片

是否可以拖放和更改 Material UI 卡的排序?如果是这样,如何? https://material-ui.com/components/cards/

reactjs material-ui

10
推荐指数
1
解决办法
2万
查看次数

React Material-UI 和颜色:警告

我是 React 和 MUI 的新手,也许我只是错过了一些东西。

我正在尝试制作一个在我的调色板中定义的带有color='warning'的按钮(主题有效,我可以使用主要和次要颜色):

const theme = createMuiTheme({
  palette: {
    primary: {
      main: '#70B657'
    },
    secondary: {
      light: '#2face3',
      main: '#4199D8',
      contrastText: '#ffcc00'
    },
    warning: {
      main: '#BC211D'
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

我在文档中注意到<Button>color 道具只需要default|inherit|primary|secondary所以不可能像那样使用它。那么在 Material-UI 中使用警告彩色按钮的正确或最佳实践是什么?我认为这是一个基本的东西,应该很容易实现..??

最好是不涉及制作多个不同主题并在需要时导入它们的解决方案。

谢谢!

color-scheme colors uicolor reactjs material-ui

10
推荐指数
1
解决办法
4248
查看次数

如何禁用 material-ui Autocomplete 中的过滤选项?

我正在使用 material-ui Autocomplete。当用户更改输入时,它会异步从后端获取建议。这是代码的一部分:

const [options, setOptions] = useState([]);

<Autocomplete
  ...
  freeSolo={true}
  options={options}
  renderInput={params => (
    <TextField
      ...
      {...params}
      onChange={async (e) => {
          // get suggestions from backend
          const suggestions = await getSuggestions(e.target.value);

          // update autocomplete options
          setOptions(suggestions);

          ...
      }}
      InputProps={{
        ...params.InputProps,
        endAdornment: (
          <React.Fragment>
            {loading ? <CircularProgress color="inherit" size={20} /> : null}
            {params.InputProps.endAdornment}
          </React.Fragment>
        ),
      }}
    />
  )}
/>
Run Code Online (Sandbox Code Playgroud)

问题是 material-ui 自动完成没有显示使用“setOptions”设置的所有选项。它过滤它们。

例如:假设用户输入“appl”,getSuggestions 返回[“apple”, “orange”, “potato”]。但它只显示“apple”,因为它过滤掉了“orange”和“potato”。

如何禁用过滤?

autocomplete reactjs material-ui react-hooks

10
推荐指数
1
解决办法
4759
查看次数

material-ui makeStyles:如何按标签名称设置样式?

我想为<p>当前组件中的所有人添加规则。我在任何地方都找不到有关如何按标签名称添加 CSS 规则的信息(material-ui 文档、Stack Overflow 等)。

不支持吗?

我正在尝试做这样的事情:

const useStyles = makeStyles((theme: Theme) =>
    createStyles({
        'p': {
            margin: 0,
        },
        someClass: {
            fontSize: 14,
        },
    })
);
Run Code Online (Sandbox Code Playgroud)

编辑:

使用 Ryan 的解决方案有效,但会产生一个新问题:

import React from 'react';
import { makeStyles, Theme, createStyles } from '@material-ui/core';

const useStyles = makeStyles((theme: Theme) =>
    createStyles({
        root: {
            '& p': {
                margin: 0,
            },
        },
        // I want this rule to override the rule above. It's not possible in the current configuration, because `.root …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs material-ui jss

10
推荐指数
1
解决办法
5649
查看次数

您可以在 Material UI 中添加其他颜色吗?

我已经有一个我正在尝试在 Material UI 中实现的样式指南。我可以看到按钮的颜色道具采用以下选项:

| 'default'
| 'inherit'
| 'primary'
| 'secondary'
Run Code Online (Sandbox Code Playgroud)

但是我需要一个额外的:

| 'default'
| 'inherit'
| 'primary'
| 'secondary'
| 'tertiary'
Run Code Online (Sandbox Code Playgroud)

您能否在 Material UI 中创建一种与通用主题系统配合使用的新颜色?或者这不是真的应该如何使用它?

reactjs material-ui

10
推荐指数
1
解决办法
2710
查看次数

在 React Router v6 中,如何在离开页面/路由之前检查表单是否脏

以下是我正在使用的软件包版本。

React version - 16.13.1
react-router-dom version - 6.0.0-beta.0
react-redux version 7.2.0
Material UI version 4.11.0
Run Code Online (Sandbox Code Playgroud)

isDirty当用户试图离开当前页面时,如何/什么是检查表单(已更改)的最佳方法?如果表单isDirty.

我将从内部获取数据useEffect()并使用 redux reducer 来呈现 UI。

我应该声明一个变量来保留原始获取的数据以进行脏检查吗?

这就是我正在做的事情,但它无法正常工作。

组件.js

 useEffect(() => {
    props.fetchUserInfo();
 })
Run Code Online (Sandbox Code Playgroud)

动作.js

export function fetchUserInfo() {
 return (dispatch) => {
     dispatch({type: USER_INITIALSTATE, {Name: 'abc', Age: 20}} 
     )
 }
}
Run Code Online (Sandbox Code Playgroud)

userReducer.js

const initialState = {
  processing: false,
  success: false,
  fail: false,
  Profile: {}
}
let oriState;
let State;
const UserReducer = (state = initialState, action) => { …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router material-ui react-redux

10
推荐指数
2
解决办法
5022
查看次数

如何在材质ui表中的每一行添加一个按钮

我无法在 Material-UI 数据表的每一行中添加一个按钮我有一个 Material-UI 数据表,我像这样渲染

<DataGrid rows={rows} columns={columns} pageSize={5} checkboxSelection />
Run Code Online (Sandbox Code Playgroud)

我已将按钮应位于的列变量“操作”列添加到列中。行只是我从道具中获得的数据对象。如何在每一行中添加一个按钮(用于编辑行)?我尝试映射数据数组,但不可能将 JSX 按钮添加到每个数据对象中

reactjs material-ui

10
推荐指数
4
解决办法
2万
查看次数

Material UI:页面初始加载时闪烁(Razzle)

我在服务器端渲染应用程序中集成了材质 UI,并遵循了此处给出的代码。Material UI css 已添加到服务器端本身的 html 中。

但是,在初始加载时,不会应用材质 ui 样式,这会导致它闪烁。

我尝试<cssbaseline>与下面的代码一起使用,但没有看到任何区别。

这是我的代码:server.js

import App from '../common/containers/App';
import { Provider } from 'react-redux';
import React from 'react';
import configureStore from '../common/store/configureStore';
import express from 'express';
import qs from 'qs';
import { renderToString } from 'react-dom/server';
import serialize from 'serialize-javascript';
import { StaticRouter, matchPath } from 'react-router-dom';
import {theme} from '../theme';
import { ServerStyleSheets, ThemeProvider } from '@material-ui/styles';
import routes from './routes'
import "../common/assets/SCSS/app.scss";

const assets = require(process.env.RAZZLE_ASSETS_MANIFEST); …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui server-side-rendering razzle

10
推荐指数
1
解决办法
692
查看次数

React hook 表单 - 对话框内的字段数组(材质 UI)

所以我有一个表单,其中包含我通过来自 react-hook-form 的 Field Array 添加的自定义字段。一切正常,但我为属性项添加了拖放功能(以重新排序),现在直接显示所有这些许多字段会很麻烦,所以我将它们移动到对话框中。

以下是了解什么更容易拖放的图片......(正确的)

问题是字段数组值在模式关闭后“重置”(在我在编辑模式中输入这些表单值之后),我猜这与重新渲染有关,但我不确定。

我试图在没有 d&d 和其他无用的东西的情况下展示最小的代码示例......
但这里是带有完整代码的代码和盒子游乐场

创建CategoryForm.js

const defaultValues = {
  name: "",
  slug: "",
  description: "",
  properties: [] // field array
}

function CreateCategoryForm() {
  const methods = useForm({ defaultValues });
  const { handleSubmit, control, errors } = methods;
  const { fields, append, remove, swap } = useFieldArray({ name: "properties", control });

  const onSubmit = async (data) => {
    console.log("data: ", data);
  };

  return (
    <Container>
        <FormProvider {...methods}>
          <form onSubmit={handleSubmit(onSubmit)} noValidate>
            <FormTextField …
Run Code Online (Sandbox Code Playgroud)

javascript forms reactjs material-ui react-hook-form

10
推荐指数
1
解决办法
910
查看次数