From 47fa0f647e9881e4bd74ed8ccf5cd0f37ef5a093 Mon Sep 17 00:00:00 2001 From: George Mamadashvili Date: Thu, 10 Aug 2023 09:33:19 +0400 Subject: [PATCH] Button: Memoize link value passed to the LinkControl --- packages/block-library/src/button/edit.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/block-library/src/button/edit.js b/packages/block-library/src/button/edit.js index e890ee67d7a2a..4684c05a37f7d 100644 --- a/packages/block-library/src/button/edit.js +++ b/packages/block-library/src/button/edit.js @@ -7,7 +7,7 @@ import classnames from 'classnames'; * WordPress dependencies */ import { __ } from '@wordpress/i18n'; -import { useEffect, useState, useRef } from '@wordpress/element'; +import { useEffect, useState, useRef, useMemo } from '@wordpress/element'; import { Button, ButtonGroup, @@ -149,6 +149,13 @@ function ButtonEdit( props ) { } }, [ isSelected ] ); + // Memoize link value to avoid overriding the LinkControl's internal state. + // This is a temporary fix. See https://github.com/WordPress/gutenberg/issues/51256. + const linkValue = useMemo( + () => ( { url, opensInNewTab } ), + [ url, opensInNewTab ] + ); + return ( <>