我有以下带有社交图标的属性:
items: {
type: 'array',
default: [
{ icon: 'twitter', url: '#' },
{ icon: 'facebook-square', url: '#' },
{ icon: 'youtube', url: '#' },
],
},
我有一些控制:
<InspectorControls>
<PanelBody title={ __( 'Social Network Settings' ) } initialOpen={ true }>
{items.map( ( item, index ) => (
<Fragment>
<SelectControl
label="Social Network"
value={ item.icon }
options={ [
{ label: __( 'Twitter' ), value: 'twitter' },
{ label: __( 'Facebook' ), value: 'facebook-square' },
{ label: __( 'Instagram' ), value: 'instagram' },
{ label: __( 'YouTube' ), value: 'youtube' },
] }
onChange={ ( value ) => setAttributes( { items: [ ...items, { icon: value } ] } ) }
/>
<TextControl
label={ __( 'Social Link' ) }
value={ item.url }
onChange={ ( value ) => setAttributes( { items: [ ...items, { url: value } ] } ) }
/>
</Fragment>
) ) }
</PanelBody>
</InspectorControls>
我正在渲染社交图标:
{items.map( ( item, index ) => (
<a key={ index }
href={ item.url || '#' }
target="_blank"
>
<FontAwesomeIcon icon={['fab', item.icon]} />
</a>
) ) }
显示 3 个图标。每个选择控件中都会显示正确的图标名称。但是,当我更改选择控件中的图标时,会添加一个新图标,而不是更新。添加 URL 时也是如此,正在添加空白标签。
更改选择和文本输入时如何更新数组?