当我们需要全局变量时,这时候就要用到dva.js了
在umi中,所有的全局变量都放在models文件夹下,单个model示例如下:
export const model = {
namespace: 'model', // namespace必须唯一,用于dispatch时进行区分
state: {}, // 数据
effects: {
*getUser({callback, payload}, {call, put, select}){
//callback是函数 payload是传递的数据
// put触发actions select用于从state中读取数据 call用于调用接口
const data = yield call(接口, payload)
//put调用reducers中的方法
yield put({
type: 'saveUser',
payload: data
})
}
}, // 处理异步操作
reduces:{
saveUser(state, { payload }) {
return { ...state, user: payload }
},
}, // 处理同步操作
subscriptions: {}, //事件监听 监听路由、鼠标、键盘等变化
}