Ngxs用法实例详解

Ngxs简介

ngxs是angular的一个状态管理框架,可以全局的管理应用程序的所有状态。

使用的场景:

  • 当应用程序的各个组件需要共享某些数据时
  • 当需要组件变得更加独立,更易于测试
  • 当程序的状态改变来自各个页面的组件时
  • 当多人共同协作一个大型项目时

ngxs有四个概念:

  1. state:表示需要关注的状态参数信息
  2. action:表示在store中注册的动作方法,这个方法用于自行更新组件关注的状态参数信息
  3. select:表示选定的状态参数,这里用于反馈给外部
  4. store:用于存储select、action和state

Ngxs实例

接下来会通过一个实例来详解上述各类概念

1.编写app.state.ts(store核心包括action、state等)

import { State, Action, StateContext, Selector } from '@ngxs/store';

export class Add {
    static readonly type = 'Add';
}

export class Reduce {
    static readonly type = 'Reduce';
}

export class Reset {
    static readonly type = 'Reset';
}
@State<number>({
    name: 'count',
    defaults: 0
})

export class CountState {



    @Action(Add)
    add({ getState, setState }) {
        const state = getState();
        setState(state + 1);
    }

    @Action(Reduce)
    reduce({ getState, setState }) {
        const state = getState();
        setState(state - 1);
    }

    @Action(Reset)
    reset(ctx: StateContext<number>) {
        ctx.setState(0);
    }
}

如上所示,State为我们需要关注并且管理的状态(State),下面定义其默认值为0,对于这个状态我们定义了几种方法(Action)来描述状态的变化

2.编写component和html

这里使用到Select来接收这个状态,并且将其定义为一个Observable,这里与异步Rxjs相关。

import { Component } from '@angular/core';
import { Store, Select } from '@ngxs/store';
import { Observable } from 'rxjs';
import { CountState, Add, Reduce, Reset } from './app.state';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {


  @Select(CountState) count$: Observable<number>;

  constructor(private store: Store) { }

  onClick1() {
    this.store.dispatch(new Add());
  }

  onClick2() {
    this.store.dispatch(new Reduce());
  }

  onClick3() {
    this.store.dispatch(new Reset());
  }

}
<h1>Count is {{count$ | async}}</h1>
<button (click)="onClick1()">Add 1</button>
<button (click)="onClick2()">Reduce 1</button>
<button (click)="onClick3()">Reset</button>

3.在app.module.ts中引入nsxsmodule并且创建根路由

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { NgxsModule } from '@ngxs/store';
import { CountState } from './app.state';


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    NgxsModule.forRoot([CountState])
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

如上一个简单的ngxs状态管理实例便实现了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 触发器是一种特殊的存储过程,它会在指定的数据库操作(如 INSERT、UPDATE、DELETE)发生时自动执行。Oracle 触发器的主要作用是在数据库操作之前或之后执行一些业务逻辑。下面是 Oracle 触发器的用法实例详解。 1. 创建触发器 Oracle 触发器的语法如下: ```sql CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name [FOR EACH ROW] [WHEN condition] DECLARE -- 声明变量 BEGIN -- 触发器的业务逻辑 END; ``` 其中,`trigger_name` 是触发器的名称,`table_name` 是要监视的表名,`INSERT`、`UPDATE`、`DELETE` 是监视的操作类型,`BEFORE` 和 `AFTER` 是触发器执行的时间点,`FOR EACH ROW` 意味着每行数据都会触发触发器,`WHEN condition` 是触发器执行的条件,`DECLARE` 是可选的,用于声明变量,`BEGIN` 和 `END` 之间是触发器的业务逻辑。 2. 触发器实例 以下是一个在 `employees` 表中插入数据时自动计算并更新 `salary` 列的触发器: ```sql CREATE OR REPLACE TRIGGER trg_update_salary AFTER INSERT ON employees FOR EACH ROW BEGIN UPDATE employees SET salary = salary + :new.salary * 0.1 WHERE employee_id = :new.employee_id; END; ``` 该触发器在 `employees` 表中插入数据之后自动执行,对插入的新行的 `salary` 列进行更新。 3. 触发器的应用场景 Oracle 触发器的应用场景非常广泛,例如: - 数据完整性约束:在数据插入、更新或删除之前或之后验证数据的完整性。 - 数据库日志:在数据插入、更新或删除之前或之后记录数据库的操作日志。 - 数据库备份:在数据插入、更新或删除之后自动备份数据库。 - 数据库监控:在数据插入、更新或删除之前或之后自动监控数据库。 - 数据库性能优化:在数据插入、更新或删除之后自动重新计算数据库的统计信息,以提高查询性能。 总之,Oracle 触发器是 Oracle 数据库中非常有用的功能,可用于实现各种业务逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值