为了账号安全,请及时绑定邮箱和手机立即绑定

如何管理反应中的状态?

如何管理反应中的状态?

慕容3067478 2021-08-20 19:03:44
我正在实现一个显示任务和项目的反应应用程序,但我不知道如何管理状态import React from 'react';import './App.css';import Header from './Components/Header.js'import Projects from './Components/ProjectsList'import Task from './Components/Task'import Grid from '@material-ui/core/Grid';import Typography from '@material-ui/core/Typography';import Hours from './Components/Hours'var projects = [  {    "id": 1,    "name": "Fifa19",    'tasks': [      { id: "1", name: 'diseñar', "progress": 10 },      { id: "2", name: 'trabajar', "progress": 20 },      { id: "3", name: 'construir', "progress": 30 },      { id: "4", name: 'pensar', "progress": 40 },      { id: "5", name: 'rehacer', "progress": 50 },    ]  },  {    "id": 2,    "name": "StarWars",    'tasks': [      { id: "5", name: 'diseñar', "progress": 10 },      { id: "6", name: 'trabajar', "progress": 20 },      { id: "7", name: 'construir', "progress": 30 },      { id: "8", name: 'pensar', "progress": 40 },      { id: "9", name: 'rehacer', "progress": 50 },    ]  },  {    "id": 3,    "name": "Pocoyo",    'tasks': [      { id: "10", name: 'diseñar', "progress": 10 },      { id: "11", name: 'trabajar', "progress": 20 },      { id: "12", name: 'construir', "progress": 30 },      { id: "13", name: 'pensar', "progress": 40 },      { id: "14", name: 'rehacer', "progress": 50 },    ]  },  {    "id": 4,    "name": "Doraemon",    'tasks': [      { id: "15", name: 'diseñar', "progress": 10 },      { id: "16", name: 'trabajar', "progress": 20 },      { id: "17", name: 'construir', "progress": 30 },      { id: "18", name: 'pensar', "progress": 40 },      { id: "19", name: 'rehacer', "progress": 50 },    ]我正在实施一个反应应用程序,它显示了任务和项目。一个项目可以有很多任务。我的主要视图是所有可用的项目,当单击其中一个时,您应该看到它们对应的任务。我的问题是:有了好的做法,我应该如何处理应用程序的状态?是否应该显示任务?我现在的申请是这样的:我有一个带有项目组件和其他任务的应用程序组件。每一个都分别有几个项目和任务组件。
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

您应该设置选定的项目 ID,而不是在状态中设置任务列表。为任务列表创建一个单独的组件,然后将所选项目的任务列表作为道具传入。


查看完整回答
反对 回复 2021-08-20
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

这取决于您的设计。您可以在同一屏幕上显示项目的任务,或者您可以有一个单独的页面来这样做。此外,由于您没有处理这些数据的后端服务,因此在如何处理状态方面没有太多可供选择的选项。


如果要在同一页面中显示任务,则必须将状态修改为与项目变量非常相似:


state={

 {

    "id": 1,

    "name": "Fifa19",

    'tasks': [

      { id: "1", name: 'diseñar', "progress": 10 },

      { id: "2", name: 'trabajar', "progress": 20 },

      { id: "3", name: 'construir', "progress": 30 },

      { id: "4", name: 'pensar', "progress": 40 },

      { id: "5", name: 'rehacer', "progress": 50 },

    ]

  },

  {

    "id": 2,

    "name": "StarWars",

    'tasks': [

      { id: "5", name: 'diseñar', "progress": 10 },

      { id: "6", name: 'trabajar', "progress": 20 },

      { id: "7", name: 'construir', "progress": 30 },

      { id: "8", name: 'pensar', "progress": 40 },

      { id: "9", name: 'rehacer', "progress": 50 },

    ]

  },

  {

    "id": 3,

    "name": "Pocoyo",

    'tasks': [

      { id: "10", name: 'diseñar', "progress": 10 },

      { id: "11", name: 'trabajar', "progress": 20 },

      { id: "12", name: 'construir', "progress": 30 },

      { id: "13", name: 'pensar', "progress": 40 },

      { id: "14", name: 'rehacer', "progress": 50 },

    ]

  },

  {

    "id": 4,

    "name": "Doraemon",

    'tasks': [

      { id: "15", name: 'diseñar', "progress": 10 },

      { id: "16", name: 'trabajar', "progress": 20 },

      { id: "17", name: 'construir', "progress": 30 },

      { id: "18", name: 'pensar', "progress": 40 },

      { id: "19", name: 'rehacer', "progress": 50 },

    ]

  },

  {

    "id": 5,

    "name": "Lineage 3",

    'tasks': [

      { id: "20", name: 'diseñar', "progress": 10 },

      { id: "21", name: 'trabajar', "progress": 20 },

      { id: "22", name: 'construir', "progress": 30 },

      { id: "23", name: 'pensar', "progress": 40 },

      { id: "24", name: 'rehacer', "progress": 50 },

    ]

  }

}

或者,如果您希望您的应用程序单独处理它,则需要使用 react-router 将路由映射到其他组件并传递 props 以显示您想要的数据。类似的东西:


<Route

  path='/tasks'

  render={(props) => <Tasks{...props}/>}

/>

在这种情况下,任务将是一个功能性/哑组件,因为它仅用于显示数据,并且只有在用户单击项目或您可能想要触发的任何事件时才会显示。


查看完整回答
反对 回复 2021-08-20
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信