2021/04/17 umi中的connect是什么
2021/04/17
场景:正在解决页面一个由于数据为空导致组件不能正确加载的问题,定位到connect,数据来源:connect注入的user参数;
请看代码👇:
export default connect(({ user }) => ({ currentUser: user.currentUser, }))(AvatarDropdown);
这是导出一个名为AvatarDropdown的react组件一行大妈,我要讲的是connect和user;
connect是从一个叫umi的东西导出的(import { connect } from 'umi';);
connect中的user是我定义好的一个变量,它来自于dva的变量池(dva对state的区分是根据namespace的),currentUser继承于user。
如果user没有值,那么就是定义user的地方没有值传递给user,加入现在的问题就是刷新后,页面的用户组件显示不出来,user没有数据,而user的数据源来自这儿👇
*refreuser({ payload }, { call, put }) { const { status, errmsg, data } = yield call(user_refresh, payload); yield put({ type: 'xxxxxx👴', payload: { status, errmsg }, }); if (status === 'ok') { const { usermsg, uadmin, upper } = data; updateStorage(usermsg, 'ok'); // 刷新成功,将数据写入缓存 // 设置全局用户个人信息 reloadAuthorized(); yield put({ type: 'user/saveCurrentUser', // user.js中自定义的方法 payload: data }); } else { message.warning(errmsg); // 刷新失败! } },
以上代码中的payload会传递到user里面,而payload来源于data,只要修改data的逻辑即可获取数据。