如何使用每页永久 URL 的 Redux 表单向导

How to use Redux Form Wizard with permanent URLS per page

我正在为使用 React + Redux 的新应用程序构建注册 > 配置文件设置流程。

我找到了以下 redux 表单向导示例:

http://redux-form.com/6.7.0/examples/wizard/

这似乎是最接近的示例,但问题是向导中的每一步都不会更改 URL,因此如果用户单击浏览器的 forward/back btn 或刷新浏览器,它会坏的。

让 Redux 表单向导拥有永久的 URL 可以吗?作为初学者,我该如何处理?

向导URL喜欢的东西:

/wizard/name
/wizard/profile
/wizard/photo

Would it be OK to make Redux form wizard have permanent URLs?

它的实现方式取决于每个用例。我看不出有什么问题为什么它不行。

wizard example 告诉您关于您的方法需要知道的一切。

说到官方的例子,你可以这样处理:

  • 创建一个 /wizard/name 路由来呈现相同的 WizardForm.js 组件;
  • 如果子路径是 /name,渲染 WizardFormFirstPage
  • 其他子路径也一样。

我最近实现了一个带有客户端路由的 redux-form 向导。我会在这里分享一些细节给后人...

我有一个名为 MainContent 的组件,它有几个 React-Router 4 路由。其中一条路线如下所示:

<Route path={'/profile/:profileSection'} component={Profile} />

此路由加载一个 "wizard" 样式的 redux 表单,用户填写该表单以设置她的个人资料。

注意 profileSection 路由参数。如果当前 URL 是: https://www.myawesomeapp.com/profile/my-age,配置文件组件将从路由器接收一个 profileSection 属性,其(字符串)值为 'my-age'。这将用于加载询问用户年龄的表单 "step"。

配置文件是一个有状态的组件。它的 render 方法 returns 每个步骤的包装组件。它看起来大致是这样的:

render(){ return ( <div> <Step1 {...this.state} {...this.props} /> <Step2 {...this.state} {...this.props} /> <Step3 {...this.state} {...this.props} /> </div> ) }

profileSection 路由器属性被传递到每个 "step" 组件中。这些步骤组件是从 HOC 创建的。 HOC 用以下行为装饰每个组件:

  1. 根据 profileSection 属性匹配正则表达式。
  2. 如果匹配,组件的呈现方法 returns 所述步骤的标记。
  3. 如果不匹配,组件的渲染方法returns null.

希望这对以后的人有所帮助...