diff --git a/packages/babel-template/src/parse.js b/packages/babel-template/src/parse.js
index 0df147530d..8599a1637f 100644
--- a/packages/babel-template/src/parse.js
+++ b/packages/babel-template/src/parse.js
@@ -64,7 +64,7 @@ function placeholderVisitorHandler(
state: MetadataState,
) {
let name;
- if (t.isIdentifier(node)) {
+ if (t.isIdentifier(node) || t.isJSXIdentifier(node)) {
name = ((node: any): BabelNodeIdentifier).name;
} else if (t.isStringLiteral(node)) {
name = ((node: any): BabelNodeStringLiteral).value;
diff --git a/packages/babel-template/test/index.js b/packages/babel-template/test/index.js
index 5c49bc310b..27a31336ab 100644
--- a/packages/babel-template/test/index.js
+++ b/packages/babel-template/test/index.js
@@ -204,5 +204,20 @@ describe("@babel/template", function() {
expect(result.test.type).to.equal("BinaryExpression");
expect(result.test.left).to.equal(value);
});
+
+ it("should replace JSX placeholder", () => {
+ const result = template.expression(
+ `
+