gpt4 book ai didi

reactjs - 以多步形式 react 路由器导航

转载 作者:行者123 更新时间:2023-12-03 13:44:26 25 4
gpt4 key购买 nike

我有一个带有助焊剂存储的 react 多步骤形式,如下所示:

// MultiForm.js
....
import LoadFile from './components/LoadFile';
import LoadPeople from './components/LoadPeople';
import Confirmation from './components/Confirmation';

class MultiForm extends Component {
.
.
.

nextPage() {
// Update page number with a flux action
MultiStepActions.nextPage();
}

previousPage() {
// Update page number with a flux action
MultiStepActions.previousPage();
}

render() {
const {pagina} = this.state;
<div className="container">
{page === 1 && <LoadFile
handleChange={this.handleChange}
file={this.state.file}
nextPage={this.nextPage}
data1={this.state.data1}
data2={this.state.data2}
data3={this.state.data3}/>
}
{page === 2 && <LoadPeople
listPeople={this.state.listPeople}
nextPage={this.nextPage}
previousPage={this.previousPage}
handleChangePeople={this.handleChangePeople}/>
}
{page === 3 && <Confirmation
listData={this.state.listData}
nextPage={this.nextPage}
previousPage={this.previousPage}/>
}
</div>
}
}


// Index.js with react-router
import Menu from './components/Menu';
class Index extends Component {
class App extends Component {
render() {
return (
<div>
<Menu />
{this.props.children}
</div>
)
}
}

render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="/MultiForm" component={MultiForm}>
</Route>
</Route>
</Router>
), document.getElementById('app'));
}

它是主要组件(MultiForm)和基本React路由器场景的总结。在组件中,我使用通量存储来设置和获取多步表单的实际页面数,然后根据实际页面渲染组件。

在组件(LoadFile、LoadPeople、Confirmation)中,我有一个按钮可以导航到下一页和上一页(通过 nextPage 和 previousPage 函数),并且一切正常。

现在我想使用浏览器的后退和上一步按钮达到相同的结果,我想使用react-router。那么,我必须如何配置 react 路由器或者我需要做什么才能让浏览器按钮与我的下一个和上一个按钮一样工作?

最佳答案

您无法覆盖浏览器的导航按钮。但是,您可以连接在react-router中定义的页面状态,并且当用户使用导航按钮浏览时,您的应用程序状态保持与浏览器状态同步。

我在这里建议您为您的 MultiForm 路线创建一个参数:

<Route path="/Multiform/:page" component={MultiForm} />

这将允许您在 this.props.params.page 中获取该 page 参数

更好的是,您可以将每个子组件作为路由连接起来:

<Route path="/Multiform/" component={MultiForm}>
<Route path="1" component={LoadFile} />
<Route path="2" component={LoadPeople} />
<Route path="3" component={Confirmation} />
</Route>

class Multiform extends Component {
//...
render() {
return (
<div className="container">
{ this.props.children }
</div>
)
}
}

关于reactjs - 以多步形式 react 路由器导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36841762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com