reactjs - 使用路由还是状态?
问题描述
在过去的 2 年里,我在不同的项目中一直在使用 React,两者都有不同的 React 方法,这让我觉得我是否正确使用了它。
假设我们要创建一个有 3 个视图的游戏:
- 第一种观点:难度选择
- 第二种观点:游戏
- 第三视图:游戏结束屏幕与您的统计数据。
第一种模式将使用 state/props 来了解您需要渲染哪个视图。这是一些伪代码:
const view = {
settings: <Settings/>,
game: <Game/>,
stats: <Stats/>,
}
return view[this.props.view]
第二种方法将使用历史来引导您进入视图:
history.push("/game/settings")
history.push("/game/playing")
history.push("/game/stats")
两种方式都有效,但它们确实不同。我的问题是:哪个更好?最重要的是:为什么?
解决方案
两种方法都有其优点和缺点。
我们应该在需要时使用第一个模式
- 组件的条件渲染。
- 组件不应直接通过 url 呈现。
我们应该在以下场景中使用第二种模式:
- 您可以使用第二种方法进行路由级分块。这将在第一次加载时减少您的 JS 包大小。因此快速的游戏加载时间。
- 假设你想分享你的游戏统计页面。您是否有单独的路线,您可以通过 url 共享第一种方法,这非常困难。
推荐阅读
- bash - 分离由 tomcat 启动的 bash 脚本
- r - R,igraph,大数据:使用非常大的网络计算顶点到顶点的最短距离
- jquery - jQuery 模板中的自动完成
- r - 无法在 R 中创建包
- notifications - 收到电子邮件:请在 2018 年 5 月 21 日之前为您在 Microsoft 注册的每个应用提供服务条款和隐私声明
- javascript - 在 html img src 代码中调用 JavaScript 函数(随机 img 生成器)
- html - 如何使我的椭圆形条带在css中有波浪?
- ios - 如何使用 segue 快速创建表格?
- canvas - Internet Explorer 画布呈现不同的 CJK 通用字体
- python - pyAudio what is the in_data in callbacks?