【问题标题】:How do I use FlowRouter.go to trigger the URL to be reloaded如何使用 FlowRouter.go 触发要重新加载的 URL
【发布时间】:2016-09-10 04:43:47
【问题描述】:

我正在使用 React/Meteor 进行分页。通过在 URL 中传递一个限制参数,我可以定义应该显示的结果数。

FlowRouter.route('/books/:_booksLimit?', {
    action() {
        mount(Es6MainLayout, {
            content: (<BookSearchWrapper/>)
        })
    }
})

但是,当我尝试增加限制以加载更多内容时,会生成 URL,但 FlowRouter 实际上并没有重新加载页面。我觉得我在这里采取了错误的方法。我应该如何触发 URL 以实际重新加载?

目前这会将 URL 设置为 books/20,但页面实际上并没有重新加载,也没有显示其他结果。

loadMore() {
    FlowRouter.go('/books/20')
}

任何帮助表示赞赏!

【问题讨论】:

  • 如何访问路由参数_booksLimit?至少对我来说,在使用不同的 url 参数(或者甚至相同的参数)调用 FlowRouter.go 之后,路由操作确实会重新运行。我怀疑您访问的参数在路由更改时不会更新。
  • 我使用以下方法访问它:var limit = FlowRouter.getParam('_booksLimit')。似乎我实际上应该将其设置为道具,以便在更改时重新渲染组件

标签: javascript meteor reactjs flow-router


【解决方案1】:

为了让组件重新渲染,我认为最好的方法是将限制作为属性传递给它。

我不确定您的数据加载是如何处理的,但我认为它是某种类型的高阶组件。

因此,应该可以使用以下方法:

FlowRouter.route('/books/:_booksLimit?', {
    name: 'books.list',
    action({_booksLimit}) {
        mount(Es6MainLayout, {
            content: () => (<BookSearchWrapper limit={_booksLimit} />)
        });
    }
});

如果没有,请确保您根据limit 属性处理加载数据。

【讨论】:

    猜你喜欢
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 2018-04-01
    • 2019-07-31
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多