admin管理员组文章数量:1313347
I'm making a moderately complicated block, with a lot of configuration parameters. I'd like to do something like
export default function MyBlockEdit( props ) {
const {
attributes: {
pickSomething,
fancyProp1,
fancyProp2, // etc... etc...
},
setAttributes,
} = props;
function MyConfigurator( { myChoice = '' } ) {
switch ( myChoice ) {
case 'foo':
return (
<PanelRow>
<Button
onClick={ () => {
setAttributes( {
fancyProp1: ! fancyProp1 } )
} }>Clicke Me</Button>
// lots more stuff here
</PanelRow>
);
break;
case 'bar':
return (
<PanelRow>
<ToggleControl
checked={ fancyProp2 }
onChange={ () => {
setAttributes( {
fancyProp2: ! fancyProp2 } )
} }/>
// lots more totally different stuff here
</PanelRow>
);
break;
}
}
return (
<>
<Fragment>
<InspectorControls>
<PanelBody>
<MyConfigurator
myChoice={pickSomething} />
</PanelBody>
</InspectorControls>
</Fragment>
<Fragment>
<div>
<SelectControl
label={ 'Change your config options' }
value={ pickSomething }
options={ [ { value: 'foo', label: 'Foo' },
{ value: 'bar', label: 'Bar' } ] }
onChange={ (myPick) => {
setAttributes( {
pickSomething: myPick } );
doSomething; // re-render InspectorControls w/new value
}} />
</div>
</Fragment>
</>
);
}
That's obviously quite simplified for purposes of asking this question, but, is there a way to do that? Even just a pointer to an existing block that updates the InspectorControls on some change would probably be sufficient, but I don't see anything.
Thanks!
本文标签: plugin developmentHow to rerender inspector controls
版权声明:本文标题:plugin development - How to re-render inspector controls? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741946334a2406436.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论