标签: material-ui

在同一个 React 项目中使用两个 UI 库的缺点?

我确信出于技术原因,这是一个坏主意,但还没有找到任何来源来解释它是否是或为什么。

假设我正在构建一个 React 网站,并且想要使用两个组件框架,比如 ant.design 和 material-ui,因为我喜欢 ant.design 所做的 90%,但我只是稍微更喜欢 material-ui 中的模态对话和想要将它们与 ant.design 组件结合使用。

他们俩似乎互相打得很好。

为什么这是一个坏主意?未来是否有潜在冲突?这会以某种方式增加膨胀吗?

javascript reactjs material-ui antd

14
推荐指数
1
解决办法
5097
查看次数

材质 UI 潜在的 withStyles 性能缓慢

我的任务是使我们的 react redux web 应用程序中的页面加载速度更快。

当加载页面的操作触发时,我们会看到大约 0.5 秒的小冻结。

我打开了分析器,乍一看似乎没有什么问题。
火焰图

没有不必要的重新渲染,显示的唯一黄色警告大约是 10 毫秒。

当我转到分析器中的排名选项卡时,我得到了一个稍微不同的故事,我发现大部分时间都花在了 withStyles() 上。
排名图

我们通过 withStyles() 在 JS 中使用 CSS 的 material-ui 方法,看起来好像使用 WithStyles() 显着影响加载速度。
是这种情况吗?或者这仅仅是“我一次渲染太多东西”的情况

将 JS 中的 CSS 转换为仅 CSS 将是一项重大的努力,尽管我确实花了一个小时在 JS 中撕掉了 CSS 并发现性能提高了大约 40%,尽管我不知道这 40% 中有多少是由于 withStyles 与页面上样式元素的性能。

css performance reactjs material-ui css-in-js

14
推荐指数
1
解决办法
8149
查看次数

尽管将道具传播到该组件,但材料 UI 工具提示不会显示在自定义组件上

当鼠标悬停在组件上时,我很难让 Material UI 工具提示真正出现。据我所知,我正在做工具提示组件的最简单实现:我直接导入它(没有自定义样式或其他任何东西),然后我将它包裹在另一个组件周围,该组件在顶层展开其道具。

从阅读文档来看,它应该是那么简单,但它并没有出现在悬停时,并且在 React DevTools 中,我看到 anchorEl 属性是未定义的。

import Tooltip from '@material-ui/core/Tooltip';

const containerComponent = () => (
    <Tooltip text="Planner"><PlannerIcon /></Tooltip>
)
Run Code Online (Sandbox Code Playgroud)

规划器图标.js

const PlannerIcon = (props) => (
  <Icon xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"
    {...props}
  >
    <path d="M14.71,3.11V14.88H2.94V3.11H14.71m1-1H1.94V15.88H15.71V2.11Z"/>
    <line x1="1.94" y1="9" x2="15.71" y2="9" strokeMiterlimit="10"/>
    <line x1="8.83" y1="2.12" x2="8.83" y2="15.77" strokeMiterlimit="10"/>
  </Icon>
  );
Run Code Online (Sandbox Code Playgroud)

tooltip reactjs material-ui

14
推荐指数
2
解决办法
9308
查看次数

如何在 Material-UI 中为工具提示标题制作换行符

我正在使用 ToolTip 组件,我有两个标题文本,只是想知道是否可以将它们呈现为两行(每种语言在一行中)而不是一行?如何将预期的样式应用到该组件?

这是代码:

renderToolTip = tipText => {
    const { classes } = this.props;
    if (tipText) {
      return (
        <Tooltip
          title={tipText}
          placement="left"
          classes={{
            tooltip: classes.tooltip,
          }}>
          <IconButton>
            <InfoOutlined />
          </IconButton>
        </Tooltip>
      );
    }
    return null;
  };

languageList = ['English', 'Spanish']
languageList.map(language => this.renderToolTip(language));
Run Code Online (Sandbox Code Playgroud)

预期:每个文本换行,有人可以帮忙吗?

html javascript css reactjs material-ui

14
推荐指数
2
解决办法
9374
查看次数

Material UI Autocomplete 上的 Typescript Equality 问题

数据存储为:

 { iso: "gb", label: "United Kingdom", country: "United Kingdom" },
 { iso: "fr", label: "France", country: "France" }
Run Code Online (Sandbox Code Playgroud)

传递给自动完成的值是:

{ iso: "gb", label: "United Kingdom", country: "United Kingdom" }
Run Code Online (Sandbox Code Playgroud)

控制台报错

Material-UI:提供给自动完成的值无效。没有一个选项与{"label":"United Kingdom","iso":"gb","country":"United Kingdom"}.

报告的类型错误 value={}

输入'字符串| ICountry' 不可分配给类型 'ICountry | ICountry[] | 空| 不明确的'。类型 'string' 不能分配给类型 'ICountry | ICountry[] | 空| 不明确的'。

问题:将数据传递给组件并未将其设置为相应的选项,我对如何解决此问题一无所知。

问题代码沙盒:https ://codesandbox.io/s/charming-firefly-zl3qd?file =/ src/App.tsx

import * as React from "react";
import { Box, Typography, TextField, Button } from "@material-ui/core";
import { Autocomplete } …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs material-ui formik

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

如何使用 Material-UI Select 和 React Hook Form

我已经使用 MUI 和 React Hook Form 在 React 中构建了一个表单。我正在尝试创建一个用作Select Input的自定义TextField元素。我希望它是一个带有Ref道具的不受控制的组件。我试图按照 MUI 和 React Hook Form 文档的建议传递 inputRef 道具,但没有成功。

            <TextField
              id="id"
              name="name"
              select
              native="true"
              className={classes.textField}
              label="label"
              margin="normal"
              variant="outlined"
              inputRef={register({ required: "Choose one option" })}
              error={!!errors.name}
            >
              <MenuItem value="">Choose one option</MenuItem>
              <MenuItem value="3">03</MenuItem>
              <MenuItem value="6">06</MenuItem>
              <MenuItem value="9">09</MenuItem>
              <MenuItem value="12">12</MenuItem>
              <MenuItem value="16">16</MenuItem>
              <MenuItem value="18">18</MenuItem>
            </TextField>
Run Code Online (Sandbox Code Playgroud)

我发现的一件事是,如果我将本机selectref 一起使用,它就可以正常工作。
此外,我尝试将inputRef道具更改为SelectProps道具,但它也不起作用。

先感谢您。

ref reactjs material-ui react-hook-form

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

带有 nextjs 的 Material-ui 选项卡?

我有一个 Material-ui、nextjs 和 typescript 项目。我正在尝试让我的导航栏与 nextjs 一起使用:

import * as React from 'react';
import AppBar from '@material-ui/core/AppBar';
import Link from "next/link";
import {Tab, Tabs} from "@material-ui/core";

export default function NavBar() {
  return (
        <AppBar position="static">
          <Tabs>
              <Tab label="Timer"><Link href="timer" /> </Tab>
              <Tab label="Home" to="/" component={Link}  />
          </Tabs>
        </AppBar>
  );
}
Run Code Online (Sandbox Code Playgroud)

但这会导致构建失败。我有什么遗漏的吗?

javascript reactjs material-ui next.js

14
推荐指数
1
解决办法
8478
查看次数

Material-UI Data-Grid:如何将参数传递给自定义工具栏?

我在数据网格(Material-UI)中定义自定义工具栏(请参阅:https: //material-ui.com/components/data-grid/rendering/#toolbar)我从这个示例开始:https://codesandbox。 io/s/x58yv?file=/demo.js

我想通过过渡显示或隐藏工具栏。因为我们无法将自定义道具传递给组件:

   <DataGrid
    ...
    components={{ Toolbar: CustomToolbar }}
    ...
   </DataGrid>
Run Code Online (Sandbox Code Playgroud)

所以我使用了这样的上下文 API:

   export function CustomToolbar(props: GridBaseComponentProps) {
    const classes = useToolbarStyles();
    const toolbarContext = useContext(ToolbarContext);
    return (
        <Collapse in={toolbarContext.toolbar}>
            <GridToolbarContainer className={classes.root}>
                <GridColumnsToolbarButton />
                <GridFilterToolbarButton />
                <GridDensitySelector />
                <GridToolbarExport />
            </GridToolbarContainer>
        </Collapse>
    );
   }
Run Code Online (Sandbox Code Playgroud)

它有效,但有更好的解决方案吗?

reactjs material-ui

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

Material UI - 禁用 DataGrid 中的多行选择

我想阻止 Material UIDataGrid多个复选框部分。当我选择复选框部分时,应选择特定行,而其他行保持未选中状态。我尝试了该disableMultipleSelection选项,但它不起作用。

<DataGrid
  rows={cycle}
  columns={columns}
  pageSize={10}
  checkboxSelection
  disableMultipleSelection
  onRowSelected={({ data, isSelected }) => {
    setDisplay(isSelected);
    setCycleId(data.key);
    setCycleImg(data.storageRef);
  }}
/>          
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

checkbox datagrid reactjs material-ui

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

是否可以在div上使用MUI的触摸波纹效果?

我读过类似问题的不同答案,但它们都是旧的,并且似乎不适用于最新版本的 MUI。

我需要在 div 上应用触摸波纹效果,但我无法使用按钮或元素,ButtonBase因为其中还有另一个按钮。

预先感谢您的回复。

reactjs material-ui ripple-effect

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