因此,您有一个来自Angular / AngularJS背景的状态,每个状态都是一个单独的页面。例如,在社交网络中,您可以将状态与您的供稿,包含好友列表的状态或可以查看个人资料的状态等联系在一起。非常简单。对我来说,React没那么多。
假设我有一个包含2页的应用程序:产品列表和单个产品视图。在它们之间切换的最佳方法是什么?
最简单的解决方案是让一个 对象 ,其具有 Statename的 和是一个 布尔
constructor() { super(); this.state = { productList: true, productView: false } }
然后在 render() 函数中添加类似的内容
return() { <div className="App"> // Or you could use an if statement { this.state.productList && <ProductList /> } { this.state.productView && <ProductView product={this.state.product} /> } </div> }
很简单吧?当然,对于2页的应用程序来说。
但是,如果你有什么用一个大的应用程序 10 , 20 , 100 页?渲染的 return() 部分将是一团糟,并且跟踪每个状态的状态是疯狂的。
我相信应该有更好的方式来组织您的应用程序。我尝试使用Google搜索,但是找不到任何有用的东西(除了使用 if else 或 条件运算符 )。
我建议您检查 React-Router 以解决这种情况
它很容易让您创建这样的自定义路由:
import React from "react"; import { BrowserRouter as Router, Route, Link } from "react-router-dom"; const BasicExample = () => ( <Router> <div> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/about">About</Link> </li> <li> <Link to="/topics">Topics</Link> </li> </ul> <hr /> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/topics" component={Topics} /> </div> </Router> ); const Home = () => ( <div> <h2>Home</h2> </div> ); const About = () => ( <div> <h2>About</h2> </div> ); const Topics = ({ match }) => ( <div> <h2>Topics</h2> <ul> <li> <Link to={`${match.url}/rendering`}>Rendering with React</Link> </li> <li> <Link to={`${match.url}/components`}>Components</Link> </li> <li> <Link to={`${match.url}/props-v-state`}>Props v. State</Link> </li> </ul> <Route path={`${match.url}/:topicId`} component={Topic} /> <Route exact path={match.url} render={() => <h3>Please select a topic.</h3>} /> </div> ); const Topic = ({ match }) => ( <div> <h3>{match.params.topicId}</h3> </div> ); export default BasicExample;