javascript - browserHistory.push() 是反模式吗?

标签 javascript react-router

因此,在这种情况下,我倾向于强制导航到某个地方:

资源页面有删除资源的按钮。我想仅在资源被删除后导航到其他地方,但如果删除失败,我不想导航。这需要能够说“进行删除调用,等待完成,检查发生了什么,相应地导航”

这对我来说就像一种代码味道。它与react-router 的声明式方法不一致。我错了吗?

是否有更惯用的方法来执行此操作:

// this.props.resource from container
<Link onClick={_ => {
  deleteResource(this.props.resource).then(result => {
    if (!result) // don't navigate, dispatch an action
    else browserHistory.push("different/place/entirely") // <= totally imperative
}/>

最佳答案

路由似乎势在必行,所以我不确定您是否可以解决这个问题。

至于它是否是反模式——我只能就我自己的代码库中的惯用方式发表意见,但我使用 browserHistory.pushLink 更方便的地方(这是经常发生的)。

也就是说:我确实认为使用 Link 很奇怪与 browserHistory.push 合作。如果没有与路由相关的原因这样做,您应该使用通用组件。

最后:it is an anti-pattern to use arrow-functions in component JSX Props

关于javascript - browserHistory.push() 是反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41771734/

相关文章:

javascript - 解析错误: Unexpected token = ReactJs

javascript - 检查类(class)是否有另一个类(class)并将类(class)添加到下一个 child

javascript - 由于性能原因,我应该在 Node.js API 上使用 ES6 吗?

javascript - Ant-Design 表单验证在使用 onChange 时返回旧值

reactjs - 将根存储传递给根组件时,类型错误中缺少属性 'dispatch'

reactjs - 如何在react-router onEnter中等待状态变化?

javascript - Express Nodejs - 如何将 request.files 传递给另一个 POST 请求

javascript - 运行基本的 Three.js

javascript - react 错误 : is declared but its value is never read. [6133]

reactjs - react 路由器在页面加载时不返回嵌套路由的内容