WP API в React Js (редактор Gutenberg): не может прочитать свойство wp: featuredmedia из неопределенного, даже с условием - reactjs


0

Я построил динамический блок в редакторе Гутенберга для последних пользовательских сообщений.

И получил для них Featuredmedia через _embed. Так что это работает, если во всех моих сообщениях есть изображение, но если нет, у меня ошибка в консоли:

TypeError: Cannot read property wp:featuredmedia of undefined

Итак, я сделал условие, но с той же ошибкой. Что я делаю неправильно? Вот мой код:

import { Component } from @wordpress/element;
import { __ } from @wordpress/i18n;
import { withSelect } from @wordpress/data;

class PortfolioPostsEdit extends Component {
    render() {
        const { posts, className } = this.props;
        return (
            <>
                {(posts && posts.length > 0) ?
                    <div className={className}>
                        {posts.map(post => (
                            <article key={post.id}>
                                <a href={post.link}>
                                    {post.title.rendered}
                                </a>
                                {post._embedded[wp:featuredmedia] &&
                                    <div className="image">
                                        <img src={post._embedded[wp:featuredmedia[0].source_url} />  
                                    </div>
                                }
                            </article>
                        ))}
                    </div>
                : <div>{__("No Posts Found", "my-blocks")}</div>
                }
            </>
        )
    }
}

export default withSelect(
    (select, props) => {
        return {
            posts: select(core).getEntityRecords(postType, my_portfolio, per_page: 20, _embed: true)
        }
    }
)(PortfolioPostsEdit);

Я не могу понять, почему мое состояние не работает:

{post._embedded[wp:featuredmedia] &&
    <div className="image">
        <img src={post._embedded[wp:featuredmedia[0].source_url} />  
    </div>
}

Может кто-нибудь помочь мне, пожалуйста? Благодарю.

  •  41
  •  1
  • 11 май 2020 2020-05-11 10:17:05

1 ответ

0

Это среднее значение post._embedded не определено. Попробуйте это:

post && post._embedded && post._embedded[wp:featuredmedia] // make sure post._embedded is defined
  • 11 май 2020 2020-05-11 10:17:06