Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Javascript 对于用于类组件的React Material UI makeStyles()函数,是否有一个非钩子选项_Javascript_Reactjs_Material Ui - Fatal编程技术网

Javascript 对于用于类组件的React Material UI makeStyles()函数,是否有一个非钩子选项

Javascript 对于用于类组件的React Material UI makeStyles()函数,是否有一个非钩子选项,javascript,reactjs,material-ui,Javascript,Reactjs,Material Ui,我正在使用material UI的react库中的makeStyles()函数,并得到以下错误 钩子只能在函数组件的主体内部调用。 下面是我正在使用的代码类型的示例 const useStyles=makeStyles(主题=>({ 容器:{ 显示:“flex”, flexWrap:“wrap”, }, 文本字段:{ 边缘左侧:主题。间距(1), 边缘光:主题。间距(1), }, 密集的:{ marginTop:主题。间距(2), }, 菜单:{ 宽度:200, }, })); 类Demo扩展

我正在使用material UI的react库中的makeStyles()函数,并得到以下错误

钩子只能在函数组件的主体内部调用。

下面是我正在使用的代码类型的示例

const useStyles=makeStyles(主题=>({
容器:{
显示:“flex”,
flexWrap:“wrap”,
},
文本字段:{
边缘左侧:主题。间距(1),
边缘光:主题。间距(1),
},
密集的:{
marginTop:主题。间距(2),
},
菜单:{
宽度:200,
},
}));
类Demo扩展了组件{
建造师(道具){
超级(道具);
}
render(){
const classes=useStyles();
返回(
演示
)
}

}
makeStyles
只是一个
高阶函数
(返回一个钩子),用于在功能组件中应用样式。您可以始终将
与Styles
一起使用,这是一种用于完全相同目的的
HOC
,适用于A类功能组件

import { withStyles } from '@material-ui/styles'

const styles = {
   root: {
     background: 'linear-gradient(45deg, #FE6B8B 30%, #FF8E53 90%)'
   }
};

class Component extends React.Component{
    render(){
        const { classes } = this.props
        return <div className={classes.foo} />
    }
}
export default withStyles(styles)(Component)
从'@material ui/styles'导入{withStyles}
常量样式={
根目录:{
背景:“线性梯度(45度,#FE6B8B 30%,#FF8E53 90%)”
}
};
类组件扩展了React.Component{
render(){
const{classes}=this.props
返回
}
}
导出默认样式(样式)(组件)

感谢上帝!钩子太可怕了!为什么@SacWebDeveloper会这样认为?钩子生命周期模式不像组件生命周期(componentDidMount、componentDidUpdate等)那样明确,魔术钩子使代码读/写更难看,而且通常更难遵循逻辑,您还必须学习一系列奇怪的非标准函数(useCallback、useEffect等)。想要比较以前的道具或状态,容易与类,与挂钩,你必须使用一些参考黑客。转向hooks假设每个人都喜欢函数式编程而不是面向对象编程。OOP被广泛使用,来自Android、iOS、C++、java等的开发人员可以让更多的类感兴趣。我已经尝试过钩子,我绝对讨厌它们。永远不会使用它们。不管怎么说,它们只是一种时尚。钩子是一个笑话,是在错误的方向上的一个严重错误,应该被弃用。就像TypeScript的崩溃一样,我们的团队已经浪费了无数个小时来处理钩子的奇怪之处和学习曲线。Facebook应该承认,他们将此强加给开发人员是错误的,并在太多代码库进一步混乱之前纠正他们的错误。