Javascript 使用React和Redux在UI中处理成功REST POST操作的常用方法是什么
我有一个线程组件负责呈现特定线程的消息,还有一个组件提交新消息。线程组件的状态由Redux管理,Redux提供异步操作,如获取消息和发布消息。下面是简化的伪代码Javascript 使用React和Redux在UI中处理成功REST POST操作的常用方法是什么,javascript,rest,design-patterns,reactjs,redux,Javascript,Rest,Design Patterns,Reactjs,Redux,我有一个线程组件负责呈现特定线程的消息,还有一个组件提交新消息。线程组件的状态由Redux管理,Redux提供异步操作,如获取消息和发布消息。下面是简化的伪代码 class Thread { messages: [] // This is actually a prop connected to Redux render = () => { messages.map(messageComponent) <SubmitMessageComponent />
class Thread {
messages: [] // This is actually a prop connected to Redux
render = () => {
messages.map(messageComponent)
<SubmitMessageComponent />
}
}
类线程{
消息:[]//这实际上是一个连接到Redux的道具
渲染=()=>{
messages.map(messageComponent)
}
}
当服务器将id为的对象发回时,处理UI中新消息的成功后期操作的常用方法是什么?将该对象推送到先前获取的消息数组是否安全,还是应该再次获取所有消息以确保一致性?第一次手术似乎很有效,但并不连贯。我考虑正确处理来自不同来源的并发RESTAPI操作。重新获取所有内容将始终确保状态的一致性,但在性能方面是冗余的(假设有接近无限量的消息)
是否有处理web应用程序用户界面中创建操作的实际方法?处理此操作的典型方法是通过“消息”缩减器来减少状态,该缩减器处理您在问题中所述的
POST_MESSAGE
操作,例如:
export default function reducer(state = initialState, action = {}) {
switch (action.type) {
[...]
case POST_MESSAGE:
return {
...state,
messages: {
...state.messages,
[action.id]: { ...action.message }
}
}
[...]
}
}
您没有解释如何以及何时获取新消息,但是如果您使用一些websocket,则消息会从服务器推送到应用程序
另一种解决方案可能是在
POST_MESSAGE
操作中添加一些时间戳,这样服务器就可以只响应从那时起新添加的消息,但不确定它是否真的是RESTfull。处理这一问题的典型方法是通过“消息”减少状态减速机处理您在问题中所述的POST_消息
操作,例如:
export default function reducer(state = initialState, action = {}) {
switch (action.type) {
[...]
case POST_MESSAGE:
return {
...state,
messages: {
...state.messages,
[action.id]: { ...action.message }
}
}
[...]
}
}
您没有解释如何以及何时获取新消息,但是如果您使用一些websocket,则消息会从服务器推送到应用程序
另一种解决方案可能是在
POST_MESSAGE
操作中添加一些时间戳,这样服务器就可以只响应从那时起新添加的消息,但不确定它是否真的是RESTfull。im在安装组件时使用http get获取消息。这不是实时消息传递,但当我需要新数据时,我会手动调度获取操作。另外,我使用的是reducer组合,那么是否可以在post reducer中修改由fetch reducer处理的状态块?您使用的是reducer组合,但您的所有reducer都会接收所有操作,因此在fetch reducer中响应post_消息
操作是完全正确的(甚至有些必要的)。我认为您不应该这样命名您的reducer,因为它们都处理相同的状态片段,即:messages.im在安装组件时使用http get获取消息。这不是实时消息传递,但当我需要新数据时,我会手动调度获取操作。另外,我使用的是reducer组合,那么是否可以在post reducer中修改由fetch reducer处理的状态块?您使用的是reducer组合,但您的所有reducer都会接收所有操作,因此在fetch reducer中响应post_消息
操作是完全正确的(甚至有些必要的)。我认为你不应该这样命名你的减缩器,因为它们都处理相同的状态片段,即:消息。