幕布斯7119047
2023-06-09 15:02:37
我想調用 ReactJS HOC 來圍繞 JSX 包裝工具提示。調用應該是這樣的:withTooltip(JSX, "very nice")為此我創建了這個函數:import React from "react";import MUITooltip from "@material-ui/core/Tooltip";import useStyles from "./index.styles";const withTooltip = (Component, text: string) => (props) => { const classes = useStyles(); return ( <MUITooltip className={classes.root} title={text}> <Component {...props} /> </MUITooltip> );};export default withTooltip;電話:import withTooltip from "commons/withTooltip/withTooltip"; const dialogBtn = isOk && withTooltip( <div className={classes.buttonWithLoader}> <OpenDialogButton variant={BaseButtonVariant.Icon} openDialogAttributes={areas.button.openDialogAttributes} /> </div>, "Very nice", ); return ( <Fragment> {dialogBtn} </Fragment> );它說:函數作為 React 子項無效。如果您返回一個組件而不是從渲染中返回,則可能會發生這種情況?;蛘咭苍S你打算調用這個函數而不是返回它如何解決?
1 回答

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
Component當您傳入 JSX 時,您的 HOC 接受一個參數。嘗試用函數包裝 JSX 或傳入呈現按鈕的組件。
但是,在您的情況下,您可能希望控制組件中的工具提示文本。如果是這種情況,我不會為此使用 HOC,而是使用包裝組件。
function WithTooltip({ classes, text, children }) {
return (
<MUITooltip className={classes.root} title={text}>
{children}
</MUITooltip>
);
}
export default WithTooltip;
const dialogBtn = isOk && (
<WithTooltip text="Very nice">
<div className={classes.buttonWithLoader}>
<OpenDialogButton
variant={BaseButtonVariant.Icon}
openDialogAttributes={areas.button.openDialogAttributes}
/>
</div>
</WithTooltip>
);
添加回答
舉報
0/150
提交
取消