node.js - 使用 Material-UI 样式时反应钩子错误
问题描述
我在空闲时间一直在自学 React 和 node.js,并且我遇到了为什么我使用 material-ui 的 makeStyles 违反了 react hook 规则的原因。
我一直在从 material-ui 网站复制代码,但即使这样似乎也违反了规则。他们的代码示例和我的主要区别在于我的代码有多个导出。下面包含的代码仅显示了这些功能之一 - 它们在功能上都非常相似。
预期的行为是 Icon 的颜色变为 Material-UI 提供的非 OOTB 颜色。
相反,我得到了无效的钩子调用。钩子只能在函数组件的主体内部调用。我相信我是在顶层而不是在条件/比较语句中执行此操作。有点失落!
任何关于我哪里出错的指导都会很棒。
谢谢!
// ItemHelper.js
import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import AssignmentIcon from '@material-ui/icons/Assignment';
import BugIcon from '@material-ui/icons/BugReport';
import BookIcon from '@material-ui/icons/Book';
import Help from '@material-ui/icons/Help';
const useStyles = makeStyles(theme => ({
successIcon: {
color: 'green'
},
errorIcon: {
color: 'red'
}
}));
export function GetIconForItemType(itemTypeID) {
const classes = useStyles();
var data = null;
switch (itemTypeID) {
case 1:
data = <AssignmentIcon className={classes.successIcon} />;
break;
case 2:
data = <BugIcon color="error" />;
break;
case 3:
data = <BookIcon color="primary" />;
break;
default:
data = <Help />;
break;
}
return data;
}
解决方案
推荐阅读
- react-native - React-native Expo: Invariant Violation: View config not found for name
- android - 在 sqlite 数据库中创建表中的语法错误
- swift - XCode 自动完成 Int 到 intmax_t
- html - 通过 Json 填充的下拉列表
- java - 使用空参数调用 Class.newInstance 导致 IllegalArgumentException
- joomla - 更改 Joomla 用户配置后出现错误 500 内部服务器错误
- java - gradle 构建期间的 SQLException errno:150
- abap - 如何查询哪些将选择总帐/帐户及其金额、营业额和运营成本?SAP B1
- php - 多个 Wordpress 在一页中循环,产生相同的数据
- unity3d - 是否有将 SVG 导入 Unity android 游戏的免费方法?