如果另一个动作被正确调度,如何调度一个动作?使用redux思考(反应)



我正在努力寻找如何用redux思维最好地调度多个动作的方法。首先,我想保持我所有的坦克隔离,而不是混合他们,因为它当然会让我使用他们在任何地方(在一个视图中,我可以调度fetchData,然后显示一个消息说&;数据已成功获取&;在另一个视图中获取数据后,只是获取其他东西,或者在某些情况下,我想执行代码,只是如果我的想法被成功派遣)。例如,假设我有下一个想法:

export const fetchData = () => async (dispatch, getState) => {
dispatch(fetchDataStart())
try {
const response = await fetch('https://jsonplaceholder.typicode.com/photos')
const data = await response.json()
dispatch(fetchDataSuccess(data))
// should i dispatch actions here and create more thunks like this one for differents 
// situations 
} catch (error) {
dispatch(fetchDataFailed(error))
throw error // is this throw error correct to stop the flow of the code
}
}

,在我的组件中,我调度这个动作来获取我需要的数据:

useEffect(() => {
// should i make this function async and await for the first dispatch and then dispatch 
// another function
const loadUsers = () => {
dispatch(fetchData())
// await dispatch(fetchData())
// dispatch(nextAction())
}
loadUsers()
},[ ])

根据第一次取值调度另一个操作的正确方法是什么?

我应该抛出一个错误,以避免其他动作被分派,如果获取不成功?

我应该调度组件中的下一个动作,还是只是根据一个动作后我想做的事情为每个不同的情况创建越来越多的坦克?(这可以使我的动作文件更大)

提前感谢您的帮助

让我们逐一回答你的问题。[答案是基于我在项目中如何做的经验]。

1)根据第一次取值调度另一个操作的正确方法是什么?正确的方法是从组件调度操作。例如(伪代码),

function demo(props){
dispatch(fetchDataStart());
if(props.data==="yes")
dispatch(nextAction())
}

props将是来自redux store的数据,因此一旦存储得到更新,它将在状态发生变化时触发下一个动作。

  1. 我应该抛出一个错误在坦克,以避免其他行动被分派,如果取回不成功?是的,错误应该存储在redux store中(您可以使用reducer)。

3)我应该调度组件中的下一个动作,还是根据我想在一个动作后做的事情为每个不同的情况创建越来越多的坦克?(这可以使我的动作文件更大)=>我们不基于操作创建中间件。所以如果我们有数据组件,那么我们可能只有一个中间件,我们可以在我们的action.js文件中有多个动作。

这是我们在项目中遵循的方法,它真的很有帮助。我们把所有的东西都保存在一个文件夹里在它下面我们有actionsreducersselectorsmiddleware这些子文件夹

相关内容

最新更新