如果我在嵌套的 React 组件中使用 browserHistory.push() ,我是否遵循了通量?

Am I following flux if I use browserHistory.push() inside of a nested react component?

根据 react-router 文档,在嵌套的 react 组件中执行 browserHistory.push() 是在 react-router 应用程序中更改当前路由的公认方式: https://github.com/rackt/react-router/blob/latest/upgrade-guides/v2.0.0.md#navigating-inside-deeply-nested-components

如果路由更改被认为是状态更改,我不确定它是否是状态更改因此我为什么要问,这不是反通量吗?

如果路由更改不被视为状态更改,那么我想记录的方法是正确的。

有人可以发表意见吗?

"State" 是一种任意术语。最终,当有多个可能的位置可以跟踪状态时,flux 使您可以灵活地决定将状态存储在何处。一些数据在其自己的组件中进行管理,而其他数据在通量类型存储中进行管理以与其他组件共享。并且有很多东西是由浏览器管理的,您不会将它们保留在您的应用程序状态中——例如,当前选中的输入框。如果需要,您可以将它们保持在您的流动状态,或者您可以将它们保持在您的组件状态。或者你可以让浏览器处理它而不用担心它。这完全取决于您希望如何使这些数据在您的应用程序中可用。

URL 位置是可以由浏览器在通量或组件状态树之外维护的状态示例。但是,如果您觉得在您的应用程序中需要以一种有用的方式需要它,您可以将它包含在您的商店中并绑定到它。 react-router-redux 具体是一个实施示例,它使 redux 应用程序的位置栏处于通量状态。

然而,归根结底,由您决定在您的通量状态下提供该信息是否有用。迂腐地说,是的,您应该让所有数据都在变化,以实现最纯粹的变化,但这并不是您真正应该优化的目标。

react-router 的文档在助焊剂应用程序中使用是完全正确的,但是如果您使用 redux 之类的东西,那么至少有一个真正的 react-router 是好的集成,这样它就不会成为您的应用程序处理状态的异常。