Model view controller 当使用reactjs客户端时,更新后端服务器的常用方法是什么?
使用reactjs构建的前端客户机似乎可以修改数据,但为了保持这种修改,修改需要存储在后端。但是,与传统的客户机-服务器应用程序不同,在客户机上呈现的数据并非始终从后端派生 例如,使用classic To Do应用程序示例,给定初始状态 (psuedo代码)Model view controller 当使用reactjs客户端时,更新后端服务器的常用方法是什么?,model-view-controller,reactjs,reactjs-flux,flux,Model View Controller,Reactjs,Reactjs Flux,Flux,使用reactjs构建的前端客户机似乎可以修改数据,但为了保持这种修改,修改需要存储在后端。但是,与传统的客户机-服务器应用程序不同,在客户机上呈现的数据并非始终从后端派生 例如,使用classic To Do应用程序示例,给定初始状态 (psuedo代码) 待办事项列表 *任务1 在此处添加新任务 添加任务 当用户添加新任务时,客户端将更新任务列表 To Do List * Task 1 * Task 2 <input> Add your new task here </i
待办事项列表
*任务1
在此处添加新任务
添加任务
当用户添加新任务时,客户端将更新任务列表
To Do List
* Task 1
* Task 2
<input> Add your new task here </input>
<button> Add Task </button>
待办事项列表
*任务1
*任务2
在此处添加新任务
添加任务
但是,新添加的任务“任务2”不一定在后端存在。为了确保性能(客户端不必等待往返更新)和一致性(如果后端更新失败,需要让用户知道并采取某种措施),可以采用哪些公认的方法将此信息推回到后端 我认为最有帮助的搜索词是“乐观更新”。基本上,你需要记录对服务器提出的请求(例如,“将‘购买土豆’添加到任务列表中”),以及该请求是否已完成(成功或失败)。我看到您在Flux下标记了这个问题,所以您可能正在构建一个Flux存储来处理API请求 我听说的一种模式是为Todo项构建一个存储区,该存储区有两个内部数据存储区,一个用于确认数据,另一个用于乐观更新。负责向React组件提供数据的方法构建了一个表示,该表示将已确认的数据与更新队列相结合
当请求成功、失败或超时时,将向项目存储发送一个指示此结果的操作。如果请求成功,可以将相应的项目添加到已确认的数据中;如果有错误,则可以将其从乐观更新队列中删除(希望还向用户发送一些有用的信号)。我认为最有帮助的搜索词是“乐观更新”。基本上,您需要记录对服务器发出的请求(例如,“将‘购买土豆’添加到任务列表中”),以及该请求是否已得到满足(成功或失败)。我看到您在Flux下标记了这个问题,所以您可能正在构建一个Flux存储来处理API请求 我听说的一种模式是为Todo项构建一个存储区,该存储区有两个内部数据存储区,一个用于确认数据,另一个用于乐观更新。负责向React组件提供数据的方法构建了一个表示,该表示将已确认的数据与更新队列相结合
当请求成功、失败或超时时,将向项目存储发送一个指示此结果的操作。如果请求成功,可以将相应的项目添加到已确认的数据中;如果有错误,则可以将其从乐观更新队列中删除(希望还向用户发送一些有用的信号)。我认为最有帮助的搜索词是“乐观更新”。基本上,您需要记录对服务器发出的请求(例如,“将‘购买土豆’添加到任务列表中”),以及该请求是否已得到满足(成功或失败)。我看到您在Flux下标记了这个问题,所以您可能正在构建一个Flux存储来处理API请求 我听说的一种模式是为Todo项构建一个存储区,该存储区有两个内部数据存储区,一个用于确认数据,另一个用于乐观更新。负责向React组件提供数据的方法构建了一个表示,该表示将已确认的数据与更新队列相结合
当请求成功、失败或超时时,将向项目存储发送一个指示此结果的操作。如果请求成功,可以将相应的项目添加到已确认的数据中;如果有错误,则可以将其从乐观更新队列中删除(希望还向用户发送一些有用的信号)。我认为最有帮助的搜索词是“乐观更新”。基本上,您需要记录对服务器发出的请求(例如,“将‘购买土豆’添加到任务列表中”),以及该请求是否已得到满足(成功或失败)。我看到您在Flux下标记了这个问题,所以您可能正在构建一个Flux存储来处理API请求 我听说的一种模式是为Todo项构建一个存储区,该存储区有两个内部数据存储区,一个用于确认数据,另一个用于乐观更新。负责向React组件提供数据的方法构建了一个表示,该表示将已确认的数据与更新队列相结合 当请求成功、失败或超时时,将向项目存储发送一个指示此结果的操作。如果请求成功,则可以将相应的项目添加到确认数据中;如果有错误,则可以从乐观更新队列中删除相应的项目(希望还可以向用户发送一些有用的信号)。根据我的理解(但我很可能弄错了,在这种情况下,我很高兴得到纠正),灵感来自,有可能:
- 在客户端添加任务时的操作
- 通过在模型中创建一个“挂起的”仅客户端实体来响应此操作的存储
- 实际尝试在服务器上创建对象的API方法李>
- 如果一切顺利,将创建一个操作以确认项目已创建
- 商店对此的反应是在客户端“整合”商品
- 如果发生错误,则会创建不同的操作(并且存储区应做出相应的反应,可能会将该项标记为“错误中”)
To Do List * Task 1 * Task 2 <input> Add your new task here </input> <button> Add Task </button>
myAjaxCall().then(function () { // everything fine... } , function () { // some error occured... })