我只是从hyperHTML开始。我正在构建一个需要路由的小应用程序,因此已将其与hyperhtml-app结合使用。
我正在尝试在视图上设置点击处理程序,以处理对锚元素的单击并使它们与路由器一起导航。以下作品有效,但似乎令人费解,我想我缺少一种更好的方法。你能建议一个更好的方法吗?
import hyper from 'hyperhtml';
import hyperApp from 'hyperhtml-app';
const app = hyperApp();
class Welcome extends hyper.Component {
render() {
return this.html`
<h1>Welcome</h1>
<a href="/settings" onclick=${this}>settings</a>
`;
}
onclick(e) {
if (e.target instanceof HTMLAnchorElement) {
e.preventDefault();
app.navigate(e.target.attributes.href.value);
}
}
}
class Settings extends hyper.Component {
render() {
return this.html`<h1>Settings</h1>`;
}
}
app.get('/', () => hyper(document.body)`${new Welcome()}`);
app.get('/settings', () => hyper(document.body)`${new Settings()}`);
app.navigate('/');
最佳答案
他们路由器的目的是为您处理导航。
实际上,仅当您不希望路由器工作时,才需要阻止Default。
我创建了一个Code Pen example,它显示您完全相同的代码,甚至根本不用单击鼠标。
最后要注意的是,如果要保留前几页的状态,则可能应处理一次,然后在每个渲染中重复使用它们。
const page = {
welcome: new Welcome,
settings: new Settings
};
app.get('/', () => hyper(document.body)`${page.welcome}`);
app.get('/settings', () => hyper(document.body)`${page.settings}`);
如果您还有其他问题,请随时提出。
问候
关于javascript - 使用hyperHTML和hyperhtml-app中的链接进行导航,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46013494/