我无法在tableUtils.jsx文件中使用useSelector。
尝试访问状态值,但最终出错。无法在顶层调用React Hook“useSelector”。React Hooks必须在React函数组件或自定义React Hook函数中调用。
export const userDetails = useSelector((state) => state?.user?.userDetails);
这就是我的utils.jsx文件的样子
import { UserFilled, TrashCan } from '@carbon/icons-react';
const generateActionColumn = (item, deactivateStatus, auditTrialModal, classNames, deleteUser, onClickSendReminder) => (
<div className="actionColumn" title={i18n.t('icons.rerenderUser')}>
{item.status === classNames.invitedStatus ? (
<Resend className="email" onClick={() => onClickSendReminder(item, true)} />
) : (
<Resend className="email" style={{ visibility: 'hidden' }} />
)}
<span title={i18n.t('icons.deleteUser')}>
<TrashCan className="delete icon_delete_user" onClick={() => deleteUser(item, true)} />
</span>
<OverflowMenu aria-label="overflow-menu" title={i18n.t('button.moreOptions')} flipped className="overflowMenuContainer">
<OverflowMenuItem
className={`tableDactivateButton ${
item.status === classNames.registeredStatus
? classNames.deactiveClassname
: item.status === classNames.deactivatedStatus
? classNames.activeClassname
: ''
}`}
itemText={item.status === classNames.deactivatedStatus ? classNames.activateText : classNames.deactivateText}
onClick={() => deactivateStatus(item, true)}
/>
<OverflowMenuItem itemText={i18n.t('button.auditTrial')} onClick={() => auditTrialModal(item, true)} />
</OverflowMenu>
</div>
);
想要在tableUtils.jsx(非react组件)中使用状态值
1条答案
按热度按时间uhry853o1#
是的。你不能在功能组件之外使用钩子。这就是它抛出错误的原因。如果你想在不同的组件之间重用逻辑,我建议你创建一个自定义的钩子。
在组件内部使用如下
您也可以在其他组件中重用上述自定义钩子。