setState 中的 NGXS 传播状态
NGXS spreading states in setState
import { State, Action, StateContext } from '@ngxs/store';
export class FeedAnimals {
static readonly type = '[Zoo] FeedAnimals';
}
export interface ZooStateModel {
feed: boolean;
}
@State<ZooStateModel>({
name: 'zoo',
defaults: {
feed: false
}
})
export class ZooState {
@Action(FeedAnimals)
feedAnimals(ctx: StateContext<ZooStateModel>) {
const state = ctx.getState();
ctx.setState({
...state,
feed: !state.feed
});
}
}
我正在从 gitbook 学习 ngxs,上面的块是从那里复制的。
在这个例子中 ...state
分配给对象。为什么我们需要这个?所以我们只有一个对象 属性 提要并且已经分配了 feed: !state.feed
你需要使用...state 因为你想修改当前状态的状态
您正在使用传播运算符进行复制操作,因此先前的状态将被复制到新的状态对象,您修改新创建的状态对象中的数据。
const a = [1, 2, 3]
const b = [...a, 4, 5, 6] => [1, 2, 3, 4, 5, 6]
所以这段代码
...state,
feed: !state.feed
您正在制作状态对象的新副本并修改状态对象中的提要属性
import { State, Action, StateContext } from '@ngxs/store';
export class FeedAnimals {
static readonly type = '[Zoo] FeedAnimals';
}
export interface ZooStateModel {
feed: boolean;
}
@State<ZooStateModel>({
name: 'zoo',
defaults: {
feed: false
}
})
export class ZooState {
@Action(FeedAnimals)
feedAnimals(ctx: StateContext<ZooStateModel>) {
const state = ctx.getState();
ctx.setState({
...state,
feed: !state.feed
});
}
}
我正在从 gitbook 学习 ngxs,上面的块是从那里复制的。
在这个例子中 ...state
分配给对象。为什么我们需要这个?所以我们只有一个对象 属性 提要并且已经分配了 feed: !state.feed
你需要使用...state 因为你想修改当前状态的状态
您正在使用传播运算符进行复制操作,因此先前的状态将被复制到新的状态对象,您修改新创建的状态对象中的数据。
const a = [1, 2, 3]
const b = [...a, 4, 5, 6] => [1, 2, 3, 4, 5, 6]
所以这段代码
...state,
feed: !state.feed
您正在制作状态对象的新副本并修改状态对象中的提要属性