gpt4 book ai didi

javascript - NGXS 在 setState 中传播状态

转载 作者:行者123 更新时间:2023-12-02 23:32:58 27 4
gpt4 key购买 nike

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,上面的 block 是从那里复制的。在此示例中,...state 分配给对象。为什么我们需要这个?所以我们只有一个对象属性 feed 并且已经分配了 feed: !state.feed

最佳答案

你需要使用...state,因为你想修改当前state的状态

使用扩展运算符,您可以进行复制操作,因此先前的状态将被复制到新的状态对象,并且您可以修改新创建的状态对象中的数据。

const a = [1, 2, 3]

const b = [...a, 4, 5, 6] =>  [1, 2, 3, 4, 5, 6]

所以这段代码

...state,
feed: !state.feed

您正在制作状态对象的新副本并修改状态对象内的 feed 属性

关于javascript - NGXS 在 setState 中传播状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413156/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com