on()函数创建Reducer时出错



刚刚接近使用ngrx,我有一个未处理的错误,我无法解决,尝试搜索,但没有,这是错误。

误差

它告诉我,我必须输入4个参数,但无论我在哪里搜索,这是正确的语法与另一种选择,有人知道问题是什么吗?谢谢你

这是减速器的页面,我也会发布动作页面,如果你有什么新闻告诉我

import { createReducer, on, Action } from '@ngrx/store';
import * as ProvaActions from './prova.actions';
import { ProvaState } from './prova.model';

export const initialState: ProvaState = {
user: {},
error: false
}
const provaReducer = createReducer(
initialState,
on(ProvaActions.editProvaSuccess, (state, action ) => ({user: action.user , error: false })),
on(ProvaActions.editProvaFailed, (state, action ) => ({ user: {}, error: true }))
);

export function reducer(state: ProvaState | undefined, action: Action) {
return provaReducer(state, action);
}

import { createAction, props } from '@ngrx/store';

export const editProva = createAction(
'[Prova] Edit',
props<{user: any}>() //payload, parametri che passo
)
export const editProvaSuccess = createAction(
'[Prova] Edit Success',
props<{user: any}>()
)
export const editProvaFailed = createAction(
'[Prova] Edit Failure')

export interface ProvaState {
user: any,
error: boolean;
}

我也有同样的问题。我就是这样解决的。

  • 确保你已经安装了Typescript 4.1.5。

  • 将你的VSCode工作区Typescript版本(在右边的底部工具栏中)更改为4.1.5。

尝试更改

const provaReducer = createReducer(
initialState,
on(ProvaActions.editProvaSuccess, (state, action ) => ({user: action.user , error: false })),
on(ProvaActions.editProvaFailed, (state, action ) => ({ user: {}, error: true }))
);

const provaReducer = createReducer(
initialState,
on(ProvaActions.editProvaSuccess, (state, action ) => { return {user: action.user , error: false }}),
on(ProvaActions.editProvaFailed, (state, action ) => {return { user: {}, error: true }})
);

边注,

on(ProvaActions.editProvaFailed, (state, action ) => ({ user: {}, error: true }))
应该

on(ProvaActions.editProvaFailed, (state) => ({ user: {}, error: true }))

您定义export const editProvaFailed = createAction('[Prova] Edit Failure')的方式,没有props,意味着您不通过

传递操作

最新更新