在辅助函数中使用 Material-UI 的 useStyle 或使辅助函数表现得像功能组件
Using Material-UI's useStyle in helper functions or making helper functions behave like functional components
Line 20:21: React Hook "useStyles" is called in function "renderActions" which is neither a React function component or a custom React Hook function react-hooks/rules-of-hooks
我收到以下错误,但我不确定为什么会收到它。 renderAction
不是函数组件,因为我们正在渲染 jsx 吗?那我们该怎么做才能让它表现得像一个函数组件呢?我问是因为我想将辅助函数用作函数组件,所以我可以使用 Material-UI 的 useStyle
而不是使用样式属性并避免不必要的代码重复。
const useStyles = makeStyles(theme => ({
button: {
backgroundColor: 'red',
"&:hover": {
backgroundColor: 'red'
}
},
modal: {
backgroundColor: 'white'
}
}));
const renderActions = (deleteVideo, id) => {
const classes = useStyles();
return (
<React.Fragment>
<Button onClick={() => deleteVideo(id)} className={classes.button}>Delete</Button>
</React.Fragment>
);
}
const Delete = (props) => {
const {deleteVideo, id } = props;
return (
<Modal
className={classes.modal}
actions={renderActions(deleteVideo, id)}
/>
)
}
是否有更好的方法来做我想做的事情?
您未能将 renderAction 函数的 'R' 大写。这就是您收到此错误的原因。所有 React 组件函数都以大写字母开头。
像这样:
const RenderActions = (props) => { const classes = useStyles(); return (
<React.Fragment>
<Button
onClick={() => props.deleteVideo(props.id)}
className={classes.button}
>
Delete
</Button>
</React.Fragment> ); };
在您的删除函数中,您未能定义样式,因此您收到了另一个错误。添加样式。
const Delete = (props) => {
const { deleteVideo, id } = props;
const classes = useStyles();
return (
<Modal className={classes.modal} actions={RenderActions(deleteVideo, id)} />
);
};
Line 20:21: React Hook "useStyles" is called in function "renderActions" which is neither a React function component or a custom React Hook function react-hooks/rules-of-hooks
我收到以下错误,但我不确定为什么会收到它。 renderAction
不是函数组件,因为我们正在渲染 jsx 吗?那我们该怎么做才能让它表现得像一个函数组件呢?我问是因为我想将辅助函数用作函数组件,所以我可以使用 Material-UI 的 useStyle
而不是使用样式属性并避免不必要的代码重复。
const useStyles = makeStyles(theme => ({
button: {
backgroundColor: 'red',
"&:hover": {
backgroundColor: 'red'
}
},
modal: {
backgroundColor: 'white'
}
}));
const renderActions = (deleteVideo, id) => {
const classes = useStyles();
return (
<React.Fragment>
<Button onClick={() => deleteVideo(id)} className={classes.button}>Delete</Button>
</React.Fragment>
);
}
const Delete = (props) => {
const {deleteVideo, id } = props;
return (
<Modal
className={classes.modal}
actions={renderActions(deleteVideo, id)}
/>
)
}
是否有更好的方法来做我想做的事情?
您未能将 renderAction 函数的 'R' 大写。这就是您收到此错误的原因。所有 React 组件函数都以大写字母开头。 像这样:
const RenderActions = (props) => { const classes = useStyles(); return (
<React.Fragment>
<Button
onClick={() => props.deleteVideo(props.id)}
className={classes.button}
>
Delete
</Button>
</React.Fragment> ); };
在您的删除函数中,您未能定义样式,因此您收到了另一个错误。添加样式。
const Delete = (props) => {
const { deleteVideo, id } = props;
const classes = useStyles();
return (
<Modal className={classes.modal} actions={RenderActions(deleteVideo, id)} />
);
};