diff --git a/packages/core-data/README.md b/packages/core-data/README.md index 2a5631013e77a..6ccdf605cc777 100644 --- a/packages/core-data/README.md +++ b/packages/core-data/README.md @@ -765,8 +765,8 @@ application, the page and the resolution details will be retrieved from the store state using `getEntityRecord()`, or resolved if missing. ```js -import { useState } from '@wordpress/data'; import { useDispatch } from '@wordpress/data'; +import { useCallback } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { TextControl } from '@wordpress/components'; import { store as noticeStore } from '@wordpress/notices'; @@ -774,17 +774,22 @@ import { useEntityRecord } from '@wordpress/core-data'; function PageRenameForm( { id } ) { const page = useEntityRecord( 'postType', 'page', id ); - const [ title, setTitle ] = useState( () => page.record.title.rendered ); const { createSuccessNotice, createErrorNotice } = useDispatch( noticeStore ); + const setTitle = useCallback( + ( title ) => { + page.edit( { title } ); + }, + [ page.edit ] + ); + if ( page.isResolving ) { return 'Loading...'; } async function onRename( event ) { event.preventDefault(); - page.edit( { title } ); try { await page.save(); createSuccessNotice( __( 'Page renamed.' ), { @@ -799,7 +804,7 @@ function PageRenameForm( { id } ) {
diff --git a/packages/core-data/src/hooks/use-entity-record.ts b/packages/core-data/src/hooks/use-entity-record.ts index a1f1a6c89fa07..4bd4c9293073e 100644 --- a/packages/core-data/src/hooks/use-entity-record.ts +++ b/packages/core-data/src/hooks/use-entity-record.ts @@ -84,8 +84,8 @@ export interface Options { * * @example * ```js - * import { useState } from '@wordpress/data'; * import { useDispatch } from '@wordpress/data'; + * import { useCallback } from '@wordpress/element'; * import { __ } from '@wordpress/i18n'; * import { TextControl } from '@wordpress/components'; * import { store as noticeStore } from '@wordpress/notices'; @@ -93,17 +93,19 @@ export interface Options { * * function PageRenameForm( { id } ) { * const page = useEntityRecord( 'postType', 'page', id ); - * const [ title, setTitle ] = useState( () => page.record.title.rendered ); * const { createSuccessNotice, createErrorNotice } = * useDispatch( noticeStore ); * + * const setTitle = useCallback( ( title ) => { + * page.edit( { title } ); + * }, [ page.edit ] ); + * * if ( page.isResolving ) { * return 'Loading...'; * } * * async function onRename( event ) { * event.preventDefault(); - * page.edit( { title } ); * try { * await page.save(); * createSuccessNotice( __( 'Page renamed.' ), { @@ -118,7 +120,7 @@ export interface Options { * * *