dva dispatch中的回调

在项目中我们可能会遇到这种情况, 有一个表格,我删除了当前行的数据,需要调查询接口来重新查询数据,

 这里把数据return出去之后,我们可以再页面中

先调用删除接口,删除完成之后 .then中的res 就是我们第一个图中return 的 true ,查询接口也是在.then中调用

这样就是先调用删除接口,等删除成功之后在调用查询接口来进行页面的刷新。

注释:不能直接在models的删除里直接调用查询的方法是因为查询接口的参数是在页面文件中的,直接在models中调用的话,参数传递不太方便  

这里只是讲解dva中 dispatch 的promise回调。更多内容请到官网查看

dva,Reducer 用于处理状态的变化,它接收旧的 state 和 action,然后返回新的 state。下面是使用 dva 的 Reducer 的示例代码: ```javascript // models/example.js export default { namespace: 'example', state: { data: [], }, reducers: { saveData(state, { payload }) { return { ...state, data: payload, }; }, updateData(state, { payload }) { const { id, newData } = payload; const newDataList = state.data.map(item => { if (item.id === id) { return { ...item, ...newData, }; } return item; }); return { ...state, data: newDataList, }; }, }, }; ``` 在上述示例,我们定义了一个 `example` 模型,它具有一个初始状态 `state`,其包含一个名为 `data` 的数组。然后,我们在 `reducers` 对象定义了两个处理函数:`saveData` 和 `updateData`。 - `saveData` 函数用于存储数据。它接收一个 `payload` 参数,该参数包含要保存的新数据。通过使用对象展开运算符 `...` 来更新状态的 `data` 数组,将其替换为新的数据。 - `updateData` 函数用于更新数据。它接收一个 `payload` 参数,该参数包含要更新的数据的 `id` 和新的数据对象 `newData`。我们使用 `map` 方法遍历状态的 `data` 数组,找到与给定 `id` 匹配的项,并使用对象展开运算符 `...` 将新数据合并到该项。最后,我们返回更新后的 `data` 数组。 在页面组件,可以通过 `dispatch` 方法来触发 Reducer,并传递相应的 action。 ```javascript import React from 'react'; import { connect } from 'dva'; function ExamplePage({ dispatch, example }) { const handleSaveData = () => { const newData = ['data1', 'data2', 'data3']; dispatch({ type: 'example/saveData', payload: newData }); }; const handleUpdateData = (id, newData) => { dispatch({ type: 'example/updateData', payload: { id, newData } }); }; return ( <div> <button onClick={handleSaveData}>Save Data</button> <button onClick={() => handleUpdateData(1, { name: 'New Name' })}>Update Data</button> {example.data.map((item, index) => ( <div key={index}>{item}</div> ))} </div> ); } export default connect(({ example }) => ({ example }))(ExamplePage); ``` 在上述示例,我们在页面组件定义了两个按钮点击事件的处理函数:`handleSaveData` 和 `handleUpdateData`。通过调用 `dispatch` 方法并传入相应的 action,我们可以触发对应的 Reducer。 这就是在 dva 使用 Reducer 的基本示例。你可以根据实际需求编写更复杂的 Reducer 函数来处理状态的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值