当前位置: 首页 > 知识库问答 >
问题:

使用react router redux可以在加载路由状态后使用链接组件进行转换

白信鸿
2023-03-14

我一直在使用react-router-redux,它允许我的位置很好地存储在状态中,并允许我使用react-router来定义路由,并在路由之间进行链接。

一个问题似乎是当我需要使用

<Link to={`/movie/${m.id}`}>
    <p>{m.name}</p>
</Link>

这将触发路由的更改,并加载新路由,在这种情况下

对于页面之间的转换,这并不能很好地工作,因为新页面在导航时将是空白的,或者您可以放入加载程序,但在加载新页面的api调用之前,它不应该导航到新页面。类似于pitchfork这样的网站。com或theguardian。通用域名格式

这个实现已经在这个问题中讨论过了,在真实世界的例子和reddit api例子中使用了在页面转换之间使用加载器的方法

我的问题是,如果我想在导航前加载新容器/路由的状态,我需要遵循dax chen在这个问题中建议的方法吗?

总而言之,答案是触发一个操作,使用redux-thunk,我们可以通过调用新容器/路由的操作来预加载状态,然后在完成后,我们使用react-router-redux的ush()操作导航到页面

store.dispatch(push('/foo'))

如果这是在转换之前预加载页面的推荐方法,那么我将更改react router redux示例和当前站点以使用此方法。

加载新路线数据然后导航的操作如下所示:

function fetchInit(url, id, to) {
  return dispatch => {
    return dispatch(fetchMovie(url, id))
      .then(function(home) {
        return dispatch(push(to))
      })
  }
}

它需要一些逻辑来识别要调用的新容器的操作以及要导航到的新路径。它可以调用新页面容器组件上的静态finchData()方法。

因此这会使

<Link onClick={ () => dispatch(navigate(`/movie/${m.id}`, 'Movie')) } >
    <p>{m.name}</p>
</Link>

共有1个答案

牛枫
2023-03-14

我制作了一个解决这个问题的实现,可以制作任何类型的自定义链接组件,并让它以您喜欢的任何方式运行,但是,在更改为路由之前等待较长的加载事件可能不是一个好主意,因为用户希望立即进行路由转换。更好的方法是使用一个好的加载器,并将其很好地混合到页面设计中,类似于pitchfork。com,并确保使用缓存(如redis、memcached)快速从API返回数据

以下是我制作的库,其中显示了自定义react路由器redux链接组件:https://github.com/StevenIseki/react-router-redux-link

 类似资料:
  • 来自导航的代码片段。js 类导航扩展组件{render(){return( ### 使用路由器导出默认值(导航) 我渲染这个组件从App.js 使用路由器导出默认值(应用程序) 下面是我的发票。js 下面是我的index.js 有人能帮我显示发票组件吗。我还没有反应过来。

  • 我有一个关于Vuejs和Vue路由器的项目。当用户登录系统时,服务器返回一个带有令牌、用户名和名字的Json文件,该文件存储在localstorage中,以便在以下请求中使用。第一个名称在布局中用于在导航栏中显示欢迎消息。注销后,localstorage被清除,问题就在这里,当其他用户在消息welcome not reload中使用新的名字付费时。

  • 我正在使用React和React路由器尝试将我的组件链接到一个项目中。我想从主页(当前组件)链接一张图片到另一个组件。 目前我可以点击图片,它有点像一个链接(有时点击后变成蓝色),尽管它没有链接到其他组件,没有错误显示,网址栏中没有任何变化。什么都没发生。 有什么想法吗?这是我的代码: 代码错误:react dom。发展js:17117上述错误发生在组件中:img(由Home创建)中div(由Ho

  • 问题内容: 我有一个连接到的前端,并且在端用定义了路由。当我用来将它们定向到动态路线时,它们可以正常工作。但是当我直接使用浏览器地址栏访问按Enter的链接时,或者我刷新了。 404页面不存在 而且我知道那是因为发生了对服务器的直接调用,并且当我们在共享主机上进行操作时,没有必要操纵共享主机上的操作。 考虑过但不适合API的动态特性。请允许我提供解决此问题的任何方法吗? 问题答案: 检查一下:ht

  • 我正在评估Apache Flink的流处理,作为Apache Spark的替代品/补充。我们通常使用Spark解决的任务之一是数据扩充。 也就是说,我有来自物联网传感器的带有传感器ID的数据流,并且我有一组传感器元数据。我想将输入流转换为传感器测量传感器元数据流。 在星火中,我可以和RDD一起加入数据流。 我可以用Apache Flink做同样的技巧吗?我在这方面没有看到直接的API。我唯一的想法

  • 问题内容: 加载Angular应用后,我需要一些模板可以脱机使用。 这样的事情将是理想的: 问题答案: 有一个 模板缓存服务 :$ templateCache ,可用于在javascript模块中预加载模板。 例如,取自文档: 甚至还有一个艰巨的任务,可以从html文件中预先生成一个javascript模块:grunt-angular- templates 另一种可能不太灵活的方法是使用 内联模板