effect里面如何获取到state里面的数据
oneQiu opened this issue · comments
我想在effect里面获取一些请求用的参数,不然每次都要传递进来,有没有直接获取state的
提供下示例代码
提供下示例代码
比如setState那个,我只需要传递state,reviewId是已经存在store里的,dispatch和this好像都没有state
const initialState: State = {
versionFileId: 0,
reviewId: 0,
sizeFileId: 0,
versionFiles: [],
multiSizeFiles: [],
versionNum: '',
name: '',
fileInfo: testFileInfo,
comparisonFileInfo: testFileInfo,
comments: [],
state: 0,
controller: {},
};
/**
* 审片相关状态
*/
export default createModel({
name: 'review',
state: initialState,
reducers: {
update(state, payload: Partial<State>) {
console.log('paylad', payload);
Object.assign(state, payload);
},
setVersionFileId(state, payload: number) {
state.versionFileId = payload;
},
setSizeFileId(state, payload: number) {
state.sizeFileId = payload;
},
},
effects: dispatch => ({
/**
* 初始化数据
*/
async initialData(data: {
reviewId: number;
fileId: number;
sizeFileId?: number;
}) {
console.log('qq', dispatch());
const { reviewId, fileId, sizeFileId = 0 } = data;
const [fileRes, sizeRes, commentsRes] = await Promise.all([
ReviewAPI.getReviewFiles({ reviewId, fileId }),
ReviewAPI.getMultiSizeFiles(reviewId),
ReviewAPI.getComments({ reviewId, fileId }),
]);
const { name, file, state, projectId, versionNum } = fileRes.data;
const { file: multiSizeFiles } = sizeRes.data;
const { comments } = commentsRes.data;
this.update({
versionFileId: fileId,
sizeFileId,
versionFiles: file,
multiSizeFiles,
state,
versionNum,
projectId,
name,
comments,
});
},
/**
* 修改状态
*/
async setState(data: { reviewId: number; state: number }) {
await ReviewAPI.setState(data);
this.update({ state: data.state });
},
}),
});
我在第二个参数看到了,rootState,但是类型貌似不对,类型是当前的model,rootState 是需要自己去createStore实例取吗?
类型问题 我们修复下