从 reducer 内部触发对第 3 方端点的通知:是还是否?
Triggering notification to 3rd party endpoint from inside reducer: yay or nay?
我正在将 React-Redux 与 redux thunk 一起用于与远程 SDK 交互并与该 SDK 同步状态的 Web 应用程序。
除了这个远程 SDK,我还有一个第三方端点,我想向其发送生命周期更新。当加载特定页面或到达我的 React 应用程序中的检查点时,我想通知端点这些事件已发生。我不关心这个端点的响应,我不根据这个响应执行任何存储更新。当第三方端点收到此事件的通知时,它会执行自己的一些逻辑。您可以将其视为 "logging" 函数。
具体来说,我有兴趣在 Redux 存储更新到某个状态时触发这个 POST 请求。
我有这个方法 post 对端点的请求:
export const lifecycleEndpointNotify = (event: string) => {
console.log(event)
const call = lifecycleEndpoint(event)
console.log(call)
return fetch(call, {
method :'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
code: 200,
message: 'Lifecycle event occured.',
})
})
.then(
response => console.log(response),
error => console.log('An error occured.', error)
)
}
放置此函数调用的合适位置是什么?因为我想在调用特定的 React 操作并更新商店后触发此事件,所以 reducer 对我来说最适合放置它的地方。但是,由于它在技术上会引发副作用,所以我不确定将它放在 reducer 中是否违反了 redux 规范。
其他选项是我在触发 dispatch() 调用以更新商店之前在我的 thunk 操作函数中调用此事件。但是,这不会 link 事件直接指向动作本身。每当分派特定操作或存储中发生特定更改时,例如当某些变量从 true 切换为 false 时,我如何调用此事件?
你永远不会在 reducer 中调用异步函数。您希望将其称为内部操作。 Reducer 仅用于更新存储。
在正在检查商店的反应组件 make 处理程序中(例如,在 componentDidUpdate
方法中),当您获得特定商店时,只需点击 dispatch
函数,该函数将接收带有值的操作参数你想通过 POST 请求。然后您需要创建将进行异步调用的操作。您可以使用 redux-thunk
执行此操作。如果您不熟悉这种方法,请告诉我。我会在 https://codesandbox.io/ 中尝试为您制作样品。
我正在将 React-Redux 与 redux thunk 一起用于与远程 SDK 交互并与该 SDK 同步状态的 Web 应用程序。
除了这个远程 SDK,我还有一个第三方端点,我想向其发送生命周期更新。当加载特定页面或到达我的 React 应用程序中的检查点时,我想通知端点这些事件已发生。我不关心这个端点的响应,我不根据这个响应执行任何存储更新。当第三方端点收到此事件的通知时,它会执行自己的一些逻辑。您可以将其视为 "logging" 函数。
具体来说,我有兴趣在 Redux 存储更新到某个状态时触发这个 POST 请求。
我有这个方法 post 对端点的请求:
export const lifecycleEndpointNotify = (event: string) => {
console.log(event)
const call = lifecycleEndpoint(event)
console.log(call)
return fetch(call, {
method :'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
code: 200,
message: 'Lifecycle event occured.',
})
})
.then(
response => console.log(response),
error => console.log('An error occured.', error)
)
}
放置此函数调用的合适位置是什么?因为我想在调用特定的 React 操作并更新商店后触发此事件,所以 reducer 对我来说最适合放置它的地方。但是,由于它在技术上会引发副作用,所以我不确定将它放在 reducer 中是否违反了 redux 规范。 其他选项是我在触发 dispatch() 调用以更新商店之前在我的 thunk 操作函数中调用此事件。但是,这不会 link 事件直接指向动作本身。每当分派特定操作或存储中发生特定更改时,例如当某些变量从 true 切换为 false 时,我如何调用此事件?
你永远不会在 reducer 中调用异步函数。您希望将其称为内部操作。 Reducer 仅用于更新存储。
在正在检查商店的反应组件 make 处理程序中(例如,在 componentDidUpdate
方法中),当您获得特定商店时,只需点击 dispatch
函数,该函数将接收带有值的操作参数你想通过 POST 请求。然后您需要创建将进行异步调用的操作。您可以使用 redux-thunk
执行此操作。如果您不熟悉这种方法,请告诉我。我会在 https://codesandbox.io/ 中尝试为您制作样品。