Skip to main content

helper-plugin 迁移参考

¥helper-plugin migration reference

本文档旨在帮助开发者迁移他们的 Strapi 插件和应用以不使用 helper-plugin 包。它按字母顺序列出了 helper-plugin 包中存在的每个导出,并按域分组。

¥This document has been written to help developers migrate their Strapi plugins and applications to not use the helper-plugin package. It lists every export that existed in the helper-plugin package, in alphabetical order and grouped by domain.

组件

¥Components

AnErrorOccurred

此组件已被移除并重构为从 @strapi/strapi/admin 导出的 Page 组件的一部分。你应该从那里使用 Page 组件:

¥This component has been removed and refactored to be part of the Page component exported from @strapi/strapi/admin. You should use the Page component from there:

// Before
import { AnErrorOccurred } from '@strapi/helper-plugin';



const MyPage = () => {


// ...

if (error) {
return <AnErrorOccurred />;
}

// ...
};

// After
import { Page } from '@strapi/strapi/admin';



const MyPage = () => {


// ...

if (error) {
return <Page.Error />;
}

// ...
};

CheckPermissions

此组件已被移除且未被替换。如果你觉得需要这个组件,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this component, please open an issue on the Strapi repository to discuss your usecase.

我们建议改用 @strapi/strapi/admin 中的 Page.Protect 组件(请参阅 CheckPagePermissions 了解示例)。如果你需要检查更底层组件的权限,则可以使用 useRBAC 钩子

¥We recommend using the Page.Protect component from @strapi/strapi/admin instead (see CheckPagePermissions for an example). If you need to check permissions for a lower level component you can use the useRBAC hook.

CheckPagePermissions

此组件已被移除并重构为从 @strapi/strapi/admin 导出的 Page 组件的一部分。你应该从那里使用 Page 组件:

¥This component has been removed and refactored to be part of the Page component exported from @strapi/strapi/admin. You should use the Page component from there:

// Before
import { CheckPagePermissions } from '@strapi/helper-plugin';



const MyProtectedPage = () => {


return (
<CheckPagePermissions
permissions={[action: 'plugin::my-plugin.read']}
>
<MyPag />
</CheckPagePermissions>
);
};

// After
import { Page } from '@strapi/strapi/admin';



const MyProtectedPage = () => {


return (
<Page.Protect permissions={[action: 'plugin::my-plugin.read']}>
<MyPage />
</Page.Protect>
);
};

行为略有变化,以前没有权限会将你重定向到页面的根目录,现在它将渲染 NoPermissions 组件。

¥The behaviour has slightly changed, where previously no permissions would redirect you to the root of the page, now it will render the NoPermissions component.

ConfirmDialog

此组件已被移动并重构。它可以从 @strapi/strapi/admin 包导入:

¥This component has been moved and refactored. It can be imported from the @strapi/strapi/admin package:

// Before
import { ConfirmDialog } from '@strapi/helper-plugin';

// After
import { ConfirmDialog } from '@strapi/strapi/admin';

详情请参阅 文档对于 ConfirmDialog 组件 上托管的每个自定义字段的专用文档。

¥Please see the contributors documentation for the ConfirmDialog component for more information.

ContentBox

此组件已被移除且未被替换。如果你觉得需要这个组件,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this component, please open an issue on the Strapi repository to discuss your usecase.

DateTimePicker

这是对设计系统的别名。你应该从那里导入组件:

¥This was aliasing the design-system. You should import the component from there:

// Before
import { DateTimePicker } from '@strapi/helper-plugin';

// After
import { DateTimePicker } from '@strapi/design-system';

DynamicTable

此组件之前已弃用,现已移除。与弃用通知类似,我们建议使用 @strapi/strapi/admin 中的 Table 组件。

¥This component was previously deprecated and has now been removed. Similar to the deprecation notice, we recommend using the Table component from @strapi/strapi/admin.

详情请参阅 文档对于 Table 组件 上托管的每个自定义字段的专用文档。

¥Please see the contributors documentation for the Table component for more information.

EmptyBodyTable

此组件已被删除,是 Table 组件的一部分。

¥This component has been removed and is part of the Table component.

详情请参阅 文档对于 Table 组件 上托管的每个自定义字段的专用文档。

¥Please see the contributors documentation for the Table component for more information.

EmptyStateLayout

此组件已被移除且未被替换。你应该使用 @strapi/design-system 中的 EmptyStateLayout

¥This component has been removed and not replaced. You should use EmptyStateLayout from @strapi/design-system:

// Before
import { EmptyStateLayout } from '@strapi/helper-plugin';

// After
import { EmptyStateLayout } from '@strapi/design-system';
注意

属性会有所不同。请参阅 Strapi 设计系统 文档对于 EmptyStateLayout 组件

¥The props will be different. Please refer to the Strapi Design System documentation for the EmptyStateLayout component.

FilterListURLQuery

此组件已移至 admin 包,现在可以通过 @strapi/strapi 包作为复合组件 Filters 的一部分导入:

¥This component was moved to the admin package and can now be imported via the @strapi/strapi package as part of the composite component Filters:

// Before
import { FilterListURLQuery } from '@strapi/helper-plugin';



const MyComponent = () => {


return (
<FilterListURLQuery
filtersSchema={[
{
name: 'name',
metadatas: { label: 'Name' },
fieldSchema: { type: 'string' },
},
]}
/>
);
};

// After
import { Filters } from '@strapi/strapi/admin';



const MyComponent = () => {


return (
<Filters.Root>
<Filters.List />
</Filters.Root>
);
};

FilterPopoverURLQueryProps

此组件已移至 admin 包,现在可以通过 @strapi/strapi 包作为复合组件 Filters 的一部分导入:

¥This component was moved to the admin package and can now be imported via the @strapi/strapi package as part of the composite component Filters:

// Before
import { FilterPopoverURLQueryProps } from '@strapi/helper-plugin';

// After
import { Filters } from '@strapi/strapi/admin';



const MyComponent = () => {


return (
<Filters.Root>
<Filters.Trigger />
<Filters.Popover />
</Filters.Root>
);
};

表格

¥Form

此组件别名为 Formik,我们正在努力将其删除。应改用 Form 组件及其从 @strapi/strapi/admin 导出的同级组件:

¥This component aliased Formik, something we're working towards removing. The Form component and its sibling exports from @strapi/strapi/admin should be used instead:

// Before
import { Form } from '@strapi/helper-plugin';

// After
import { Form } from '@strapi/strapi/admin';

用户应注意,Formik 库的任何使用都将不再有效,而应查看贡献者 文档对于 Form 组件

¥Users should note that any use of the Formik library will no longer work and instead should look at the contributors documentation for the Form component.

GenericInput

此组件已被移除并重构为从 @strapi/strapi/admin 导出的 InputRenderer 组件。你应该从那里使用 InputRenderer 组件:

¥This component has been removed and refactored to become the InputRenderer component exported from @strapi/strapi/admin. You should use the InputRenderer component from there:

// Before
import { GenericInput } from '@strapi/helper-plugin';



const MyComponent = () => {


return (
<GenericInput
type={'type'}
hint={'hint'}
label={'label'}
name={'name'}
onChange={onMetaChange}
value={'value'}
/>
);
};

// After
import { InputRenderer } from '@strapi/strapi/admin';

请注意,InputRenderer 组件具有不同的 API,你应该参考 文档对于 InputRenderer 组件

¥Note, that the InputRenderer component has a different API, and you should refer to the documentation for the InputRenderer component.

InjectionZone

此组件已被移除且未被替换。但是,你可以使用 useStrapiApp 钩子轻松地在自己的项目中复制此操作:

¥This component has been removed and not replaced. However, you can easily replicate this in your own project by using the useStrapiApp hook:

// Before

import { InjectionZone } from '@strapi/helper-plugin';
<InjectionZone area={`injection.zone.area`} />;

// After



const MyComponent = ({ area, ...compProps }) => {


const getPlugin = useStrapiApp('MyComponent', (state) => state.getPlugin);

const [pluginName, page, position] = area.split('.');

const plugin = getPlugin(pluginName);
const components = plugin?.getInjectedComponents(page, position);

if (!plugin || !components) {
return null;
}

return components.map(({ name, Component }) => (
<Component key={name} {...props} />
));
};

¥Link

这是对设计系统的别名,并将 as 属性与 react-router-dom 一起使用。你应该从那里导入组件:

¥This was aliasing the design-system and using the as prop with react-router-dom. You should import the component from there:

// Before
import { Link } from '@strapi/helper-plugin';

// After
import { Link } from '@strapi/design-system/v2';
import { NavLink } from 'react-router-dom';



const MyLink = () => {


return (
<Link as={NavLink} to="/my-link">
My Link
</Link>
);
};

LinkButton

这是对设计系统的别名,并将 as 属性与 react-router-dom 一起使用。你应该从那里导入组件:

¥This was aliasing the design-system and using the as prop with react-router-dom. You should import the component from there:

// Before
import { LinkButton } from '@strapi/helper-plugin';

// After
import { LinkButton } from '@strapi/design-system/v2';
import { NavLink } from 'react-router-dom';



const MyLink = () => {


return (
<LinkButton as={NavLink} to="/my-link">
My Link
</LinkButton>
);
};

LoadingIndicatorPage

此组件已被移除并重构为从 @strapi/strapi/admin 导出的 Page 组件的一部分。你应该从那里使用 Page 组件:

¥This component has been removed and refactored to be part of the Page component exported from @strapi/strapi/admin. You should use the Page component from there:

// Before
import { LoadingIndicatorPage } from '@strapi/helper-plugin';



const MyPage = () => {


// ...

if (isLoading) {
return <LoadingIndicatorPage />;
}

// ...
};

// After
import { Page } from '@strapi/strapi/admin';



const MyPage = () => {


// ...

if (isLoading) {
return <Page.Loading />;
}

// ...
};

NoContent

此组件已被移除且未被替换,你应该使用来自 @strapi/design-systemEmptyStateLayout 组件。

¥This component has been removed and not replaced, you should use the EmptyStateLayout component from @strapi/design-system.

// Before
import { NoContent } from '@strapi/helper-plugin';

<NoContent
content={{
id: 'translation_id',
defaultMessage: 'Message',
}}
/>;

// After
import { EmptyStateLayout } from '@strapi/design-system';

<EmptyStateLayout
content={{
id: 'translation_id',
defaultMessage: 'Message',
}}
/>;

NoMedia

此组件已被移除且未被替换。如果你觉得需要这个组件,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this component, please open an issue on the Strapi repository to discuss your usecase.

NoPermissions

此组件已被移除并重构为从 @strapi/strapi/admin 导出的 Page 组件的一部分。你应该从那里使用 Page 组件:

¥This component has been removed and refactored to be part of the Page component exported from @strapi/strapi/admin. You should use the Page component from there:

// Before
import { NoPermissions } from '@strapi/helper-plugin';



const MyPage = () => {


// ...

if (!canRead) {
return <NoPermissions />;
}

// ...
};

// After
import { Page } from '@strapi/strapi/admin';



const MyPage = () => {


// ...

if (!canRead) {
return <Page.NoPermissions />;
}

// ...
};

NotAllowedInput

此组件已被移除且未被替换。如果你觉得需要这个组件,请在 Strapi 存储库上打开一个问题来讨论你的用例。你可以使用 @strapi/design-system 中的 TextInput 轻松地在自己的项目中复制此操作:

¥This component has been removed and not replaced. If you feel like you need this component, please open an issue on the Strapi repository to discuss your usecase. You can easily replicate this in your own project by using the TextInput from @strapi/design-system:

import { TextInput } from '@strapi/design-system';



const MyComponent = (props) => {


return (
<TextInput
disabled
placeholder="No permissions to see this field"
type="text"
{...props}
/>
);
};

PageSizeURLQuery

此组件已移至 admin 包,现在可以通过 @strapi/strapi 包作为复合组件 Pagination 的一部分导入:

¥This component was moved to the admin package and can now be imported via the @strapi/strapi package as part of the composite component Pagination:

// Before
import { PageSizeURLQuery } from '@strapi/helper-plugin';



const MyComponent = () => {


return (
<PageSizeURLQuery options={['12', '24', '50', '100']} defaultValue="24" />
);
};

// After
import { Pagination } from '@strapi/strapi/admin';



const MyComponent = () => {


return (
<Pagination.Root>
<Pagination.PageSize />
</Pagination.Root>
);
};

请注意,有一些轻微的行为变化,即如果最低 pageSize 为 10 但你只有 9 个条目,则 PageSize 不会渲染。由于重构,一些 props 将会移动和更改,请查看贡献者 分页组件的文档 了解更多信息。

¥Note, there were some slightly behavioural changes i.e. the PageSize won't render if the lowest pageSize is 10 but you only have 9 entries. Due to the refactor some props will have moved and changed, please look at the contributors documentation for the Pagination component for more information.

PaginationURLQueryProps

此组件已移至 admin 包,现在可以通过 @strapi/strapi 包作为复合组件 Pagination 的一部分导入:

¥This component was moved to the admin package and can now be imported via the @strapi/strapi package as part of the composite component Pagination:

// Before
import { PaginationURLQueryProps } from '@strapi/helper-plugin';

// After
import { Pagination } from '@strapi/strapi/admin';



const MyComponent = () => {


return (
<Pagination.Root pageCount={2}>
<Pagination.Links />
</Pagination.Root>
);
};

请注意,有一些轻微的行为变化,即如果页面少于 2 个,则链接不会渲染。由于重构,一些属性将会移动和更改,请查看 分页组件的文档 了解更多信息。

¥Note, there were some slightly behavioural changes i.e. the Links won't render if there are less than 2 pages. Due to the refactor some props will have moved and changed, please look at the documentation for the Pagination component for more information.

ReactSelect

此组件已被移除且未被替换。如果你觉得需要这个组件,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this component, please open an issue on the Strapi repository to discuss your usecase.

RelativeTime

此组件已被移除且未被替换。如果你觉得需要这个组件,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this component, please open an issue on the Strapi repository to discuss your usecase.

SearchURLQuery

此组件已被删除并重命名为 SearchInput,现在可以由 @strapi/strapi 包导入:

¥This component was removed and renamed to SearchInput and can now be imported by the @strapi/strapi package:

// Before
import { SearchURLQuery } from '@strapi/helper-plugin';

// After
import { SearchInput } from '@strapi/strapi/admin';

SettingsPageTitle

此组件已被移除且未被替换。如果你觉得需要这个组件,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this component, please open an issue on the Strapi repository to discuss your usecase.

状态

¥Status

此组件应从 @strapi/design-system 包导入:

¥This component should be imported from the @strapi/design-system package:

// Before
import { Status } from '@strapi/helper-plugin';



const MyComponent = () => {


return (
<Status variant={statusColor} showBullet={false} size="S">
<Typography fontWeight="bold" textColor={`${statusColor}700`}>
{stateMessage[status]}
</Typography>
</Status>
);
};

// After
import { Status } from '@strapi/design-system';

表格

¥Table

此组件应从 @strapi/strapi/admin 包导入:

¥This component should be imported from the @strapi/strapi/admin package:

// Before
import { Table } from '@strapi/helper-plugin';



const MyComponent = () => {


return (
<Table colCount={2} rowCount={2}>
<Thead>
<Tr>
<Th>
<Typography variant="sigma" textColor="neutral600">
{`Name`}
</Typography>
</Th>
<Th>
<Typography variant="sigma" textColor="neutral600">
{`Description`}
</Typography>
</Th>
</Tr>
</Thead>
<Tbody>
{data?.map(({ name, description }) => {
return (
<Tr key={name}>
<Td>
<Typography
textColor="neutral800"
variant="omega"
fontWeight="bold"
>
{name}
</Typography>
</Td>
<Td>
<Typography textColor="neutral800">{description}</Typography>
</Td>
</Tr>
);
})}
</Tbody>
</Table>
);
};

// After
import { Table } from '@strapi/strapi/admin';
注意

部分属性已更改,请参考贡献者 文档对于 Table 组件

¥Some of the props have changed, please refer to the contributors documentation for the Table component.

内容管理者

¥Content Manager

contentManagementUtilRemoveFieldsFromData

此功能已被删除,但未被替换。如果你觉得需要此功能,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This function has been removed and not replaced. If you feel like you need this function, please open an issue on the Strapi repository to discuss your usecase.

formatContentTypeData

此功能已被删除,但未被替换。如果你觉得需要此功能,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This function has been removed and not replaced. If you feel like you need this function, please open an issue on the Strapi repository to discuss your usecase.

使用 CMEditViewDataManager

¥useCMEditViewDataManager

许多内部组件已被重新设计和拆分。我们正在公开一个主要的实验钩子来替换这个名为 useContentManagerContext 的钩子,而其余逻辑则在几个钩子中。

¥A lot of the internals have been reworked and split. We are exposing a main experimental hook to replace this one named useContentManagerContext while the rest of the logic is in several hooks.

// Before
import { useCMEditViewDataManager } from '@strapi/helper-plugin';

// After
import { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin/hooks';

下面列出了一些常见的用例:

¥Some common use cases are listed below:

// Before
const { slug, isSingleType, isCreatingEntry, hasDraftAndPublished } =
useCMEditViewDataManager();

// After
const {
model,
collectionType,
id,
slug,
isCreatingEntry,
isSingleType,
hasDraftAndPublish,
} = useContentManagerContext();
// Before

// 'allLayoutData' has been removed. It contained 'components' and 'contentType' which can be extracted from the 'useContentManagerContext' hook as seen below.
const { allLayoutData } = useCMEditViewDataManager();

// After
const { components, contentType } = useContentManagerContext();
// Before
const { layout } = useCMEditViewDataManager();

// After
const { layout } = useContentManagerContext();

const {
edit: { layout, components },
list: { layout },
} = layout;
// Before
const { initialData, modifiedData, onChange } = useCMEditViewDataManager();

// After
const { form } = useContentManagerContext();

// Here 'initialData' and 'modifiedData' correspond to 'initialValues' and 'values'.
const { initialValues, values, onChange } = form;
// Before
const { onPublish, onUnpublish } = useCMEditViewDataManager();

// After
const { publish, unpublish } = useDocumentActions();

特性

¥Features

AppInfo

此功能已移至 @strapi/admin,现在仅导出钩子 useStrapiApp

¥This feature has been moved to @strapi/admin and only the hook useStrapiApp is now exported.

AutoReloadOverlayBlocker

此功能已被删除,但未被替换。如果你觉得需要此功能,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This feature has been removed and not replaced. If you feel like you need this feature, please open an issue on the Strapi repository to discuss your usecase.

CustomFields

此功能已被删除,是 useStrapiApp 钩子的一部分。

¥This feature has been removed and is part of the useStrapiApp hook.

GuidedTour

此功能已移至 @strapi/admin,现在仅导出钩子 useGuidedTour

¥This feature has been moved to @strapi/admin and only the hook useGuidedTour is now exported.

¥Library

此功能已被删除,是 useStrapiApp 钩子的一部分。

¥This feature has been removed and is part of the useStrapiApp hook.

通知

¥Notifications

此功能已移至 @strapi/admin 包,仅导出 useNotifications 钩子。message 属性不再是 TranslationMessage,而只能是字符串。如果你以前使用的是 warning 类型,则应该改用 danger 类型,如果你使用的是 softWarning 类型,则应该使用 warning。最后,返回类型现在是一个对象。

¥This feature has been moved to the @strapi/admin package and only the useNotifications hook is exported. The message property can no longer be a TranslationMessage and instead, only a string. If you were previously using the warning type you should instead use the danger type and if you were using the softWarning type you should use warning. Finally, the return type is now an object.

// Before
import { useNotification } from '@strapi/helper-plugin';



const toggleNotification = useNotification();



toggleNotification({
type: 'warning',
message: {
id: 'my.message.id',
defaultMessage: 'My message',
},
});

// After
import { useNotification } from '@strapi/strapi/admin';

const { toggleNotification } = useNotification();

toggleNotification({
type: 'danger',
message: formatMessage({
id: 'my.message.id',
defaultMessage: 'My message',
}),
});

RBAC

此功能已被删除,但未被替换。如果你需要访问用户的权限,则应使用 useAuth 钩子。

¥This feature has removed and not replaced. If you need to access the user's permissions you should use the useAuth hook.

// Before
import { useRBACProvider } from '@strapi/helper-plugin';

const { allPermission, refetchPermissions } = useRBACProvider();

// After
import { useAuth } from '@strapi/strapi/admin';



const permissions = useAuth('COMPONENT_NAME', (state) => state.permissions);




const refetchPermission = useAuth(


'COMPONENT_NAME',
(state) => state.refetchPermission
);

OverlayBlocker

此功能已被删除,但未被替换。如果你觉得需要此功能,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This feature has been removed and not replaced. If you feel like you need this feature, please open an issue on the Strapi repository to discuss your usecase.

StrapiApp

此功能已移至 @strapi/admin,现在仅导出钩子 useStrapiApp

¥This feature has been moved to @strapi/admin and only the hook useStrapiApp is now exported.

跟踪

¥Tracking

此功能已移至 @strapi/admin 包,仅导出 useTracking 钩子。

¥This feature has been moved to the @strapi/admin package and only the useTracking hook is exported.

钩子

¥Hooks

使用 API​​ErrorHandler

¥useAPIErrorHandler

此钩子已被删除。你应该从 @strapi/strapi/admin 包导入它:

¥This hook has been removed. You should import it from the @strapi/strapi/admin package:

// Before
import { useAPIErrorHandler } from '@strapi/helper-plugin';

// After
import { useAPIErrorHandler } from '@strapi/strapi/admin';

useCallbackRef

此钩子已被删除。你应该从 @strapi/design-system 包导入它:

¥This hook has been removed. You should import it from the @strapi/design-system package:

// Before
import { useCallbackRef } from '@strapi/helper-plugin';

// After
import { useCallbackRef } from '@strapi/design-system';

useClipboard

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

useCollator

此钩子已被删除。你应该从 @strapi/design-system 包导入它:

¥This hook has been removed. You should import it from the @strapi/design-system package:

// Before
import { useCollator } from '@strapi/helper-plugin';

// After
import { useCollator } from '@strapi/design-system';

useFetchClient

此钩子已被删除。你应该从 @strapi/strapi/admin 包导入它:

¥This hook has been removed. You should import it from the @strapi/strapi/admin package:

// Before
import { useFetchClient } from '@strapi/helper-plugin';

// After
import { useFetchClient } from '@strapi/strapi/admin';

useFieldHint

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

useFilter

此钩子已被删除。你应该从 @strapi/design-system 包导入它:

¥This hook has been removed. You should import it from the @strapi/design-system package:

// Before
import { useFilter } from '@strapi/helper-plugin';

// After
import { useFilter } from '@strapi/design-system';

useFocusInputField

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

useFocusWhenNavigate

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

useFormattedMessage

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

useLockScroll

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

useQuery

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

useQueryParams

此钩子已被移动。你应该从 @strapi/strapi/admin 包导入它:

¥This hook has been moved. You should import it from the @strapi/strapi/admin package:

// Before
import { useQueryParams } from '@strapi/helper-plugin';

// After
import { useQueryParams } from '@strapi/strapi/admin';

使用 RBAC

¥useRBAC

此钩子已被移动。你应该从 @strapi/strapi/admin 包导入它:

¥This hook has been moved. You should import it from the @strapi/strapi/admin package:

// Before
import { useRBAC } from '@strapi/helper-plugin';

// After
import { useRBAC } from '@strapi/strapi/admin';

useSelectionState

此钩子已被删除,但未被替换。如果你觉得需要这个钩子,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This hook has been removed and not replaced. If you feel like you need this hook, please open an issue on the Strapi repository to discuss your usecase.

图标

¥Icons

SortIcon

此组件已被移除且未被替换。如果你觉得需要此功能,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this function, please open an issue on the Strapi repository to discuss your usecase.

RemoveRoundedButton

此组件已被移除且未被替换。如果你觉得需要此功能,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This component has been removed and not replaced. If you feel like you need this function, please open an issue on the Strapi repository to discuss your usecase.

实用程序

¥Utils

awaitToJs

此实用程序已被删除且未被替换,请改用 async / await 和 try / catch。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced, use async / await with try / catch instead. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

difference

此实用程序已被删除且未被替换。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

findMatchingPermissions

此实用程序已被删除且未被替换。你应该自己过滤权限。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. You should filter the permissions yourself. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

formatPermissionsForRequest

此实用程序已被删除且未被替换。你应该自己格式化权限。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. You should format the permissions yourself. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

getAPIInnerErrors

此实用程序已被删除且未被替换,请改用 async / await 和 try / catch。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced, use async / await with try / catch instead. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

getFetchClient

此实用程序已被删除。你应该从 @strapi/strapi/admin 包导入它:

¥This util has been removed. You should import it from the @strapi/strapi/admin package:

// Before
import { getFetchClient } from '@strapi/helper-plugin';

// After
import { getFetchClient } from '@strapi/strapi/admin';

getFileExtension

此实用程序已被删除且未被替换。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

getYupInnerErrors

此实用程序已被删除且未被替换。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

auth

此实用程序已被删除且未被替换。如果你尝试与令牌或当前用户进行交互,则应改用 useAuth 钩子。如果你通常与 localStorage 交互,则直接访问它,例如 localStorage.getItem('myKey')

¥This util has been removed and not replaced. If you're trying to interact with the token or current user you use should use the useAuth hook instead. If you're generally interacting with localStorage, then access this directly e.g. localStorage.getItem('myKey').

hasPermissions

此实用程序已被删除。如果你需要使用它,则应使用 useAuth 钩子中的 checkUserHasPermissions 函数。

¥This util has been removed. If you need to use it, you should use the checkUserHasPermissions function from the useAuth hook.

// Before
import { hasPermissions } from '@strapi/helper-plugin';



const permissions = await Promise.all(


generalSectionRawLinks.map(({ permissions }) =>
hasPermissions(userPermissions, permissions)
)
);

// After
import { useAuth } from '@strapi/strapi/admin';

const { checkUserHasPermissions } = useAuth(
'COMPONENT_NAME',
(state) => state.checkUserHasPermissions
);

normalizeAPIError

此实用程序已被删除且未被替换。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

prefixFileUrlWithBackendUrl

此实用程序已被删除且未被替换。如果需要,使用 strapi backendUrl 作为相对 url 的前缀。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. Use the strapi backendUrl to prefix the relative url if you need. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

prefixPluginTranslations

此实用程序已被删除且未被替换。如果需要,你的插件应该自己定义这个实用程序,实现如下:

¥This util has been removed and not replaced. Your plugin should define this util itself if needed, with an implementation like this:

type TradOptions = Record<string, string>;



const prefixPluginTranslations = (


trad: TradOptions,
pluginId: string
): TradOptions => {
if (!pluginId) {
throw new TypeError("pluginId can't be empty");
}
return Object.keys(trad).reduce((acc, current) => {
acc[`${pluginId}.${current}`] = trad[current];
return acc;
}, {} as TradOptions);
};

如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

pxToRem

此实用程序已被删除且未被替换。你应该直接使用此代码代替 pxToRem:

¥This util has been removed and not replaced. You should use directly this code in place of the pxToRem:

// Before
pxToRem(
32
) // After
`${32 / 16}rem`;
// or
('2rem');

如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

request

此实用程序已被删除且未被替换。你可以从 @strapi/strapi/admin 中使用 useFetchClientUpdatedThis content was recently updated.

¥This util has been removed and not replaced. You can use useFetchClient from @strapi/strapi/admin.UpdatedThis content was recently updated.

UpdatedThis content was recently updated.
// Before
import { request } from '@strapi/helper-plugin';

request(`/${pluginId}/settings/config`, { method: 'GET' });

// After
import { useFetchClient } from '@strapi/strapi/admin';

const { get } = useFetchClient();
get(`/${pluginId}/settings/config`);

你可以这样使用它

¥And you can use it like this

const { get } = useFetchClient();

const { data } = await get(requestURL);

如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

setHexOpacity

此实用程序已被删除且未被替换,请改用原生 CSS 不透明度属性。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced, use the native CSS opacity property instead. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

stopPropagation

此实用程序已被删除且未被替换。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

shouldCheckPermissions

此实用程序已被删除且未被替换。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

translatedErrors

此实用程序已被删除。你应该从 @strapi/strapi/admin 包导入它:

¥This utils has been removed. You should import it from the @strapi/strapi/admin package:

// Before
import { translatedErrors } from '@strapi/helper-plugin';

// After
import { translatedErrors } from '@strapi/strapi/admin';

如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.

wrapAxiosInstance

此实用程序已被删除且未被替换。如果你觉得需要这个实用程序,请在 Strapi 存储库上打开一个问题来讨论你的用例。

¥This util has been removed and not replaced. If you feel like you need this util, please open an issue on the Strapi repository to discuss your usecase.