Javascript 获取数据的存储设计(全局?&;航行

Javascript 获取数据的存储设计(全局?&;航行,javascript,reactjs,antd,Javascript,Reactjs,Antd,我是JavaScript&React新手(对stackoverflow也是新手),我希望获得一些关于实现数据存储的“逻辑”的想法/答案。几年前,我在Obj-C/iOS方面有开发背景。因此,我可能不熟悉web开发中的一些一般概念 希望我在第一篇文章中做的一切都是正确的,到目前为止我从未真正使用过stackoverflow:) 所以,基本上我有一个小项目,有一个侧面和内容(使用Ant设计框架)。在这个项目中,我试图弄清楚generell的工作是如何完成的,比如视图导航、数据处理等等 在侧边栏的一个选

我是JavaScript&React新手(对stackoverflow也是新手),我希望获得一些关于实现数据存储的“逻辑”的想法/答案。几年前,我在Obj-C/iOS方面有开发背景。因此,我可能不熟悉web开发中的一些一般概念

希望我在第一篇文章中做的一切都是正确的,到目前为止我从未真正使用过stackoverflow:) 所以,基本上我有一个小项目,有一个侧面和内容(使用Ant设计框架)。在这个项目中,我试图弄清楚generell的工作是如何完成的,比如视图导航、数据处理等等

在侧边栏的一个选项卡中,我使用了一个表(也是antd)。如果您按下一个项目,它应该会显示一个带有该特定项目道具的详细视图(稍后它应该是用于数据更改/输入的表单)

我的App.js:

<Content style=...> 
          <Switch>   
            
            <Route exact path="/tasks" >
              <TasksTable 
              data={this.state.tasksData} 
              handleOnRowClicked = {this.handleOnRowClicked}
              />
            </Route>
           
            
            <Route exact path="/details"> 
              <TasksDetail currentTask= {this.state.currentDetailTask}/>
            </Route>
              ....
          </Switch>       
        </Content>

....
在TasksTable组件中:

 ...
 const history = useHistory()
 ...
function handleOnRowClicked(record, rowIndex,event) {
  console.log("Clicked on cell", event)
  history.push("/details/")

  props.handleOnRowClicked(record.id)

}


return(
  <Table 
  dataSource={props.data}
  onRow={ (record, rowIndex) => {
    return {
      onClick: event => { 
        handleOnRowClicked(record, rowIndex,event) }
    }
  }
  }
  >
    <Column title="Name" dataIndex="name" key="name" />
    <Column title="Kunde" dataIndex="client_name" key="client_name" />
    <Column title="Fertigstellung bis" dataIndex="completion_date" key="completion_date" />
    <Column title="Hinzugefügt" dataIndex="created" key="created" />
    <Column title="" 
    dataIndex="remove_button" 
    key="remove_button" 
    render={removeButton => {
      return <button key="ButtonKey" onClick={event => handleOnButtonClicked(event)}>Remove</button>
    }}/>

  </Table>  
  )
。。。
const history=useHistory()
...
函数handleOnRowClicked(记录、行索引、事件){
日志(“单击单元格”,事件)
history.push(“/details/”)
props.handleOnRowClicked(record.id)
}
返回(
{
返回{
onClick:event=>{
handleOnRowClicked(记录、行索引、事件)}
}
}
}
>
{
return handleOnButtonClicked(事件)}>Remove
}}/>
)
}

我想要实现的目标:

  • 单击表格的一行时,我想按另一个“视图”//侧以显示所选行的详细信息。目前,我正在使用history.push()在TasksTable组件中执行此操作。我想知道这是否是显示(细节)视图的正确方式?因为我需要在App.js中调用props.myHandleCallbackFunc(selectedItem)来设置一个状态名称“currentlySelected”,然后将该状态作为prop传递给推送的详细视图。 希望你明白我的意思

  • 据我所知,我应该使用。。。用于自动化导航过程。问题是:当我使用antdesign中的表时,我需要通过编程来实现这一点。这就是为什么我对onRow属性有这种变通方法(至少感觉是这样的)。。。这是使用桌子的正确方法吗?我感觉不是这样

  • 我的解决方法有问题:我将一个按钮渲染到单元格中,以传递一个删除按钮。 问题是:即使我点击按钮,它也会注册为对行的点击,从而推送我的detailview。。。我试图用event.target.key进行区分,但没有成功

  • 这是将我的api获取的所有数据保存在最上面的组件中并通过道具共享给sup组件的正确方法吗?那么如何从子组件更新它?当值发生变化时,是否每个子组件都应该通过道具获得一个处理程序来回调

  • 或者换句话说:从子组件发出http请求,或者将更改后的数据发送到应用程序组件,然后让它触发http POST请求?我猜这是第二个选择

    非常感谢你,我感谢你的每一个回答。从现在开始的几个小时里,我一直在努力工作。。。 (很抱歉拼写错误,英语不是我的母语。)

    注:事实上,我昨天想发这篇文章,但花了几个额外的时间来处理“类似的问题”。。。不过,还有一些开放性问题:D


    Robin

    Redux是JavaScript应用程序的可预测状态容器

    它帮助您编写行为一致、在不同环境(客户端、服务器和本机)中运行且易于测试的应用程序。除此之外,它还提供了良好的开发人员体验,例如实时代码编辑与时间旅行调试器相结合

    您可以将Redux与React或任何其他视图库一起使用。它很小(2kB,包括依赖项),但有一个很大的插件生态系统。
    Redux是JavaScript应用程序的可预测状态容器

    它帮助您编写行为一致、在不同环境(客户端、服务器和本机)中运行且易于测试的应用程序。除此之外,它还提供了良好的开发人员体验,例如实时代码编辑与时间旅行调试器相结合

    您可以将Redux与React或任何其他视图库一起使用。它很小(2kB,包括依赖项),但有一个很大的插件生态系统。

    好的,我一定会尝试一下。但我不敢相信,我的问题没有“简单”的内置解决方案?谢谢!你也可以使用IndexedDB并在itOK上编写包装,我一定会尝试一下。但我不敢相信,我的问题没有“简单”的内置解决方案?谢谢!您还可以使用IndexedDB并在其上编写包装器