Javascript 如何从getMedia订阅异步响应?

Javascript 如何从getMedia订阅异步响应?,javascript,reactjs,wordpress-gutenberg,Javascript,Reactjs,Wordpress Gutenberg,我在古腾堡块的属性中保存了一个图像,我想做的是,当块装入/渲染时,检查该图像是否已从媒体库中删除,如果已删除,请将其从块属性中删除 到目前为止,我得到的结果如下: const checkSavedImage = ({id},update)=>{ const media = useSelect( ( select ) => { return select('core').getMedia(id); }, [] ); useEffect(() =

我在古腾堡块的属性中保存了一个图像,我想做的是,当块装入/渲染时,检查该图像是否已从媒体库中删除,如果已删除,请将其从块属性中删除

到目前为止,我得到的结果如下:

const checkSavedImage = ({id},update)=>{
    const media =  useSelect( ( select ) => {
        return select('core').getMedia(id);
    }, [] );
    useEffect(() => {
            update(media);
    }, [media])
}

export default ( {attributes,setAttributes} ) => {

    const { imageMobile } = attributes;

    checkSavedImage(imageMobile,(image)=>setAttributes({imageMobile:image ? {id:image.id,url:image.source_url} : {}}));


    return (
            <Image
            onRemove={()=>setAttributes({imageMobile:{}})}
            onSelect={image=>setAttributes({imageMobile:{id:image.id,url:image.url}})}
            image={imageMobile}     
            />)
}
这确实有效,但来自select'core'。getMediaid的初始响应返回undefined,然后在请求解析时返回媒体对象。这将导致块属性的更新,首先删除图像,然后重新插入,这将提示用户在离开页面之前保存更改,即使用户没有进行任何更改

最终,我要解决的是,select'core'。getMediaid在仍在解析或媒体项被删除时返回未定义

我认为正确的方法是利用subscribe或isResolving,但我找不到任何示例来帮助处理这个特定用例

我正在寻找帮助,以更新块属性与一个空的对象时,只有当图像从媒体库中删除