我正在使用Mithril.js将我的个人网站/博客创建为单页应用程序。我网站上的所有页面和博客文章都是使用PagePost组件呈现的,并且根据URL中的:slug加载了正确的页面。

我遇到的问题是,每当我尝试在页面之间切换时,都不会更新页面的内容。在页面和帖子之间切换是可行的,因为我在PagePost组件之间交替。但是,当我尝试两次连续使用同一组件时(从一页到另一页),它不会更新网页。

m.route(document.body, '/', {
  // `Home` is a wrapper around `Page`
  // so I can route to `/` instead of `/home`
  '/': Home,
  '/:slug': Page,
  '/blog/:slug': Post
});
const Home = {
  view() {
    return m(Page, { slug: 'home' });
  }
};

这是Page组件(Post组件非常相似)。两个组件均正确渲染。
const Page = {
  content: {},
  oninit(vnode) {
    m.request({
      method: 'GET',
      url: 'content.json',
    }).then((response) => {
      Page.content = response.pages[vnode.attrs.slug];
    });
  },
  view() {
    if (Page.content) {
      return [
        m('#content', m.trust(Page.content.body))
      ];
    }
  }
};

Mithril 为何不认识那颗鼻涕虫变了?

最佳答案

docs page for m.route 为您提供解决方案。

10-07 13:23