Reactjs 在可重用组件中等待分派的正确模式?

Reactjs 在可重用组件中等待分派的正确模式?,reactjs,redux,redux-thunk,Reactjs,Redux,Redux Thunk,让我们设想一下React/Redux应用程序中的以下组件: 所有文件其中列出了曾经发送的所有文件,并始终显示在左侧面板中 文件夹包含文件列表和一个文件上载组件,用于将文件附加到此文件夹 文件上传可以在平台上的任何位置使用,也可以在同一页面上多次使用,只需上传一个新文件即可 文件上传的正确模式是什么 使用异步API发送文件(react thunk) 更新存储以触发所有文件渲染 警告“文件夹”组件已上载新文件 第一个猜测是尝试dispatch(uploadFile())。然后(onFileU

让我们设想一下React/Redux应用程序中的以下组件:

  • 所有文件其中列出了曾经发送的所有文件,并始终显示在左侧面板中
  • 文件夹包含文件列表和一个文件上载组件,用于将文件附加到此文件夹
  • 文件上传可以在平台上的任何位置使用,也可以在同一页面上多次使用,只需上传一个新文件即可
文件上传的正确模式是什么

  • 使用异步API发送文件(react thunk)
  • 更新存储以触发所有文件渲染
  • 警告“文件夹”组件已上载新文件
第一个猜测是尝试
dispatch(uploadFile())。然后(onFileUploaded)
FileUpload组件中文件夹将通过传递给文件上传组件的“onUploaded”回调发出警告。然后,通过添加新上载的文件来更新其内部状态

但派遣和承诺不能结合在一起

选项1:

文件夹文件上传组件都不应使用存储来保存其数据。但他们应该利用自己的内部状态来实现这一目标

然后,“FileUpload”不应该分派一个操作,而是简单地调用一个带有承诺的异步操作

在这种情况下,如何更新所有文件的存储?在承诺后的文件上传组件中

选项2:

所有组件都应将其状态保存到存储中


然后,如何设计存储以在同一页面中启用多个FileUpload实例?

thunk操作可以分派多个操作:
const uploadFile=(args)=>(dispatch,getState)=>{dispatch(load();upload(args)。然后(()=>dispatch(success()),dispatch(fail())}
为什么您希望在组件中上载文件后发送什么逻辑,而只是将其放在thunk操作中?@HMR,因为FileUpload可以从不同的上下文启动。这里我需要添加上传的文件到文件夹。但在其他地方,我可以保存一个用户配置文件图标,例如,那么逻辑应该仍然在操作中,而不是在组件中。组件可以将一个值传递给action creator/thunk action,以指示下一步要做什么,但不应该为实际实现它而烦恼。@HMR所以每次我在不同的上下文中使用FileUpload时,我都必须更新thunk action以添加副作用?感觉不对,因为onUpload thunk操作将成为一个具有多个用途的巨大功能(更新用户图标、更新文件夹文件列表等等)。