视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JS里计数器的使用
2020-11-27 19:58:59 责编:小采
文档

这次给大家带来JS里计数器的使用,使用JS里计数器的注意事项有哪些,下面就是实战案例,一起来看一下。

angular2+ 的学习成本应该是三大框架中最高的一个,教程及案例稀缺,流程较为复杂,这里我用计数器和在线获取用户数据并渲染成列表这两个案例来帮大家快速入手angular2+。

在开始之前,希望你能先掌握rxjs以及typescript,否则对其中的一些写法可能会觉得难以理解。

在开始之前,需要先安装@ngrx/store和@ngrx/effects

yarn add @ngrx/store @ngrx/effects

本教程使用的 ngrx/effects和ngrx/store版本均为5.2.0。

先来大致说一下开发流程:

开始 -> 编写数据模型 -> 编写action -> 编写redurces并配置到相应module -> 编写services -> 编写effects并配置到相应module -> 创建组件 -> 组件绑定数据模型 -> 渲染

我们先完成计数器案例。此案例由于没有异步任务,所以可以省略掉services和effects。

从创建项目到启动初始页面之间的步骤这里就不讲了。注意style要使用scss。还有不要使用cnpm安装包。改用yarn或者npm,这样后期使用不容易报错。

ng new your-project --style scss

第一步:编写数据模型(app/models/num.ts)

export class Num {
 count: number;
 
 constructor(num: number) { this.count = num;
 }
}

第二步:编写action(app/actions/num.ts)

import {Action} from '@ngrx/store';
 
export enum NumActionType {
 Add = 'ADD'}
 
export class ADD implements Action {
 readonly type = NumActionType.Add; //固定写法,必须叫type}

第三步:编写redurcers(app/redurces/modelNum.ts)

import {Num} from '../models/num';
import {Action} from '@ngrx/store';
import {NumActionType} from '../actions/num';
 
 
export const modelNum = (state: Num = new Num(0), action: Action) => { 
 switch (action.type) { case NumActionType.Add:
 state.count++; return state; default: return state;
 }
};

不要忘记配置redurcer(app/app.module.ts)

 imports: [
 BrowserModule,
 RouterModule.forRoot(routes),
 StoreModule.forRoot({ modelNum}), //配置redurcer
 ],

第四部:创建组件

ng g component model-num

第五步:组件绑定数据模型(连带完成第六步)

组件html文件:

<p>
 <input (click)="add()" value="+" type="button">
 <p>{{num.count}}</p>
 <input value="-" type="button">
 <br/>
 <a routerLink="/list">to list demo</a></p>

组件ts文件:

import {Component, OnInit} from '@angular/core';
import {Num} from '../models/num';
import {Store} from '@ngrx/store';
import {NumActionType} from '../actions/num';
@Component({
 selector: 'app-model-demo',
 templateUrl: './model-demo.component.html',
 styleUrls: ['./model-demo.component.scss']
})
export class ModelDemoComponent implements OnInit {
 constructor(private _store: Store<any>) {
 this._store.select('modelNum').subscribe(mNum => { //涉及到rxjs。 
 this.num = mNum;
 console.log(mNum);
 });
 }
 public num: Num;
 public add() {
 console.log('add');
 this._store.dispatch({ //调用dispatch触发添加redurces
 type: NumActionType.Add
 });
 }
 ngOnInit() {
 }
}

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

JavaScript之优化DOM

Vue的计算属性

下载本文
显示全文
专题