ngxs labs immer 要求完整状态?
ngxs labs immer asking for full state?
我严格按照 ngxs/labs immer 文档来调整我的代码并发现了这个奇怪的行为。
为什么 setState
要求所有状态属性:
export class DadesStateModel {
apartats: IApartat[];
authors: IAuthor[];
}
(...)
@Action(SetArticles)
@ImmutableContext()
setArticles({setState}: StateContext<DadesStateModel>, {apartat}: SetArticles) {
setState((state: DadesStateModel) => ({
state.apartats[state.apartats.findIndex(ap=>ap.Id===apartat.Id)] = apartat;
return state;
}))
}
出现以下错误消息:
Argument of type '(state: DadesStateModel) => { state: DadesStateModel; (Missing): IApartat; return: DadesStateModel; }' is not assignable to parameter of type 'DadesStateModel | StateOperator<DadesStateModel>'.
Type '(state: DadesStateModel) => { state: DadesStateModel; (Missing): IApartat; return: DadesStateModel; }' is not assignable to type 'StateOperator<DadesStateModel>'.
Type '{ state: DadesStateModel; (Missing): IApartat; return: DadesStateModel; }' is missing the following properties from type 'DadesStateModel': authors.
尽管我的回答来得有点晚:您看到此错误是由于句法错误。您正在用方括号 ({})
将 lambda 中的封闭 {}
包裹起来,因此它假设您打算成为 lambda 的主体的是 lambda 的 return 值。只需删除封闭的括号即可。
setState((state: DadesStateModel) => { // Instead of "({"
state.apartats[state.apartats.findIndex(ap=>ap.Id===apartat.Id)] = apartat;
return state;
}); // Instead of "}));"
我严格按照 ngxs/labs immer 文档来调整我的代码并发现了这个奇怪的行为。
为什么 setState
要求所有状态属性:
export class DadesStateModel {
apartats: IApartat[];
authors: IAuthor[];
}
(...)
@Action(SetArticles)
@ImmutableContext()
setArticles({setState}: StateContext<DadesStateModel>, {apartat}: SetArticles) {
setState((state: DadesStateModel) => ({
state.apartats[state.apartats.findIndex(ap=>ap.Id===apartat.Id)] = apartat;
return state;
}))
}
出现以下错误消息:
Argument of type '(state: DadesStateModel) => { state: DadesStateModel; (Missing): IApartat; return: DadesStateModel; }' is not assignable to parameter of type 'DadesStateModel | StateOperator<DadesStateModel>'.
Type '(state: DadesStateModel) => { state: DadesStateModel; (Missing): IApartat; return: DadesStateModel; }' is not assignable to type 'StateOperator<DadesStateModel>'.
Type '{ state: DadesStateModel; (Missing): IApartat; return: DadesStateModel; }' is missing the following properties from type 'DadesStateModel': authors.
尽管我的回答来得有点晚:您看到此错误是由于句法错误。您正在用方括号 ({})
将 lambda 中的封闭 {}
包裹起来,因此它假设您打算成为 lambda 的主体的是 lambda 的 return 值。只需删除封闭的括号即可。
setState((state: DadesStateModel) => { // Instead of "({"
state.apartats[state.apartats.findIndex(ap=>ap.Id===apartat.Id)] = apartat;
return state;
}); // Instead of "}));"