Неожиданный токен JSX после возврата массива

#javascript #syntax-error #jsx #wordpress-gutenberg

#javascript #синтаксическая ошибка #jsx #wordpress-gutenberg

Вопрос:

Я впервые создаю свой собственный блок Гутенберга в WordPress. Я получаю сообщение об ошибке:

Ошибка синтаксиса: неожиданный токен ‘<‘

Рассматриваемый токен появляется после моего возврата массива

index.js

 edit({attributes, setAttributes}) {
  const{
    title,
    backgroundColor,
  } = attributes;

  return ([
    <InspectorControls>
      /** Code Block **/
    </InspectorControls>,

    <div>
      /** Code Block **/
    </div>
  ]);

},

/** Rest of Code **/
 

‘<‘ тега — это то, что помечается, и я не уверен, почему, поскольку я следовал инструкциям, которые показывают, что это должен быть тот же настроенный код.

Ответ №1:

Эта ошибка вызвана возвратом нескольких элементов в вашем операторе return без корневого / родительского элемента. Это неприятная ошибка, с которой можно столкнуться с точки зрения синтаксиса, все кажется прекрасным, это скорее концепция, которая не сразу понятна из документов / руководств, когда вы начинаете создавать первый блок WordPress gutenberg с помощью React.

Чтобы решить эту проблему, все дочерние элементы должны принадлежать родительскому / корневому элементу, обычно рассматриваемому как <div className={className}> .. </div> в примерах WordPress Gutenberg, где возвращаются все элементы, включая InspectorControls, например:

 return ([
<div className={className}> // Add this 
    <InspectorControls>
     /** Code Block **/
    </InspectorControls>

    <div>
    /** Code Block **/
    </div>
</div> // Add enclosing tag
  ]);
 

В качестве альтернативы, это можно решить, обернув дочерние элементы в <> ... </> (сокращение для фрагмента ReactJS):

 return ([
<> // Add this (generic ReactJS fragment) 
    <InspectorControls>
     /** Code Block **/
    </InspectorControls>

    <div>
    /** Code Block **/
    </div>
</> // Add enclosing tag
  ]);
 

Я обнаружил, что элементы рендеринга документов ReactJS полезны для лучшего понимания того, как писать для WordPress Gutenberg.