У меня есть функция, которая спускается по простому дереву и вызывает функции на каждом шаге для печати меню:
renderMenuFx(menu, renderFx) {
renderFx.startMenu()
for (const entry of menu) {
renderFx.startEntry()
renderFx.renderEntry(entry.path.join(""), entry.title)
if (entry.menuEntries) {
this.renderMenuFx(entry.menuEntries, renderFx)
}
renderFx.endEntry()
}
renderFx.endMenu()
}
, и она работает при входе в консоль:
this.renderMenuFx(tree, {
startMenu() { console.log('<ul>') },
endMenu() { console.log('</ul>') },
startEntry() { console.log('<li>') },
endEntry() { console.log('</li>') },
renderEntry(path, title) { console.log(`<a href="${path}">${title}</a>`) },
})
Но это не так, когда я пытаюсь отобразить его в React:
<div>
{
f.renderMenu(this.tree, {
startMenu() { return ( <ul> ) },
endMenu() { return ( </ul> ) },
startEntry() { return ( <li> ) },
endEntry() { return ( </li> ) },
renderEntry(path, title) { return ( <a href={path}>{title}</a> ) },
})
}
</div>
На самом деле, проблема в том, что он не компилируется, давая:
./src/components/Menu/MenuDyn.js
Syntax error: Unexpected token (141:37)
139 | f.renderMenu(this.tree, {
140 | startMenu() { return ( <ul> ) },
> 141 | endMenu() { return ( </ul> ) },
| ^
Я, очевидно, делать неправильно: как правильно справиться с такой ситуацией?