1

我有一个关于单页应用程序编码风格的简单问题。我的前端正在使用React Redux哪个更好的使用Redux的CRUD编码风格?

例如,我有一个标准的CRUD页面,其中数据显示在表格中并弹出模式窗体。数据表是从服务器而不是从客户端过滤的。

我的问题:如果我创建,更新或删除数据,我应该调用刷新功能或只是在REDX存储中编辑它?

刷新功能:

  1. 数据总是被更新
  2. 新添加的数据被滤波
  3. 两次请求,慢,反应迟钝(主问题)

终极版店铺:

  1. 应用程序看起来响应
  2. 一次请求
  3. 丢失服务器端过滤功能和数据没有更新,如果多个用户正在使用的应用程序(主要问题)

任何意见会赞赏

回答

0

调度一个异步操作,查询过滤器发生何处以及何时解析,使用刷新过滤的数据更新redux状态。

// dispatches an action to refresh data without page reload 
export function refreshDataAction() { 
    return (dispatch, getState) => { 

    return (
     fetch('api/data', options) // fetch the data from server and let it filter 
     .then(data => dispatch(updateDataAction(data))) 
    ); 
    }; 
} 

// dispatches an action to update redux state with filtered data 
export default function updateDataAction(data) { 
    return { 
    type: 'UPDATE_DATA', 
    ...data, 
    } 
} 

然后,你可以只调用dispatch(refreshDataAction())数据被过滤,不刷新页面。

+0

这样会有两次请求吗?我的意思是刷新功能实际上是一个API调用来刷新数据。 – Hakutsuru

+0

是的,但不是页面重新加载。这将是一个单一的请求。 – lustoykov

+0

为什么单个请求?我认为这将是两倍,创造(...),然后({刷新()}) – Hakutsuru

1

编辑本地商店给予及时的反馈,然后发送请求,当你得到的回复回来巩固店用新的数据

基本上,一举两得的事情,并得到两全其美

的最佳效益
+0

过滤器如何?假设数据是按名称排序的,并且有10个项目/页面的分页。 如果我加入其名字应该是在另一个分页页面一个新的数据,那么我不能,除非我有额外的过滤功能,编辑商店。过滤器在服务器端完成 – Hakutsuru

0

在React应用程序中调用刷新(不仅React,而且还包括任何实时前端应用程序)都会违背使用React的整个原则。

你应该做的是,每当客户端发生数据更改操作时,应该触发一个API调用,相应地改变你的服务器端数据。将数据发送回客户端(如果您喜欢网络套接字,您可以将其发送给所有客户端),将其保存到Redux状态以触发重新渲染。