Мне нужно добавить настраиваемый атрибут к компонентам приложения ReactJS в целях тестирования. Я пытался использовать 2 разных плагина, однако они применяют атрибут ко всем JSXElements в этом компоненте, и я хочу применить его только к первому, в противном случае я получаю ненужное дублирование атрибута, что еще больше усложняет написание тестов. и я пытаюсь сохранить хрупкость.
Я просмотрел документацию и не могу найти, как перейти к первому JSXElement, поэтому сам попробовал несколько вещей и потерпел неудачу, это
Приведенный ниже атрибут никогда не добавляет атрибут
visitor: {
JSXElement( path, state ) {
if ( path.key === 0 )
{
path.node.openingElement.attributes.push(
t.jSXAttribute(
t.jSXIdentifier( 'data-e2e' ),
t.stringLiteral( `${someValue}` )
)
);
}
}
}
Приведенная ниже ошибка показывает, что firstElem in undefined
visitor: {
Program( path, state ) {
let arr = [];
path.traverse( {
enter( jsxPath )
{
if ( jsxPath.node.type === 'JSXElement' )
{
arr.push( jsxPath );
}
}
} );
let firstElem = arr[ 0 ]; <<< undefined
firstElem.node.openingElement.attributes.push(
t.jSXAttribute(
t.jSXIdentifier( 'data-e2e' ),
t.stringLiteral( `${someValue}` )
)
);
}
}
}
Кто-нибудь может предложить, как получить только первый JSXElement.