2.0.9 • Published 6 years ago

ng-react-component v2.0.9

Weekly downloads
4
License
MIT
Repository
github
Last release
6 years ago

ReactComponent<P,T>

import { EventEmitter, ElementRef, Renderer2 } from '@angular/core';
import { OnChanges, KeyValueChanges, DoCheck, KeyValueDiffers, SimpleChanges } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/share';
export interface KeyValue {
    [key: string]: any;
}
export declare abstract class ReactComponent<P extends KeyValue, T extends KeyValue> implements OnChanges, DoCheck {
    private _differs;
    ele: ElementRef;
    render: Renderer2;
    state: T;
    readonly state$: Observable<KeyValue>;
    props: P;
    readonly props$: Observable<P>;
    stateChange: EventEmitter<T>;
    propsChange: EventEmitter<P>;
    onClick: EventEmitter<any>;
    /**
     * 监听click事件
     * @param e
     */
    _onClick(e: Event): void;
    private _stateDiffer;
    private _propsDiffer;
    constructor(_differs: KeyValueDiffers, ele: ElementRef, render: Renderer2);
    setState(state: T): void;
    setProps(props: P): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngDoCheck(): void;
    setClass(classObj: {
        [key: string]: boolean;
    }): void;
    setStyle(styleObj: {
        [key: string]: string;
    }): void;
    removeStyle(styles: any): void;
    addStyle(name: string, value: string): void;
    addClass(name: string): void;
    setAttribute(classObj: {
        [key: string]: any;
    }): void;
    removeClass(name: string): void;
    private _stateChanges(changes);
    private _propsChanges(changes);
    abstract onPropsChange(changes: KeyValueChanges<string, P>): void;
    abstract onStateChange(changes: KeyValueChanges<string, T>): void;
}
  • 使用

some.html

<h2>{{props.title}}</h2>
<div *ngIf="state.loading"></div>
  • or
<h2>{{(props$|async).title}}</h2>
<div *ngIf="(state$|async).loading"></div>

some.ts

import { ReactComponent } from 'ng-react-component';
import { KeyValueChanges, KeyValueDiffers } from '@angular/core';

export interface SomeProps{
    title: string;
}
export interface SomeState{
    loading: boolean;
}
@Component({
    selector: 'some-com',
    templateUrl: './some.html'
})
export class SomeComponennt extends ReactComponent<SomeProps,SomeState> implements OnInit{
    constructor(
        differs: KeyValueDiffers
    ){ 
        super(differs);
    }

    ngOnInit() { }

    changeTitle() {
        this.setProps({
            title: '测试使用'
        });
    }

    hideLoading() {
        this.setState({
            loading: false
        });
    }

    onPropsChange(changes: KeyValueChanges<string, SomeProps>){

    }
    onStateChange(changes: KeyValueChanges<string, SomeState>){

    }

    getDefaultProps(): SomeProps{
        return {
            title: ''
        }
    }

    getInitialState(): SomeState{
        return {
            loading: false
        }
    }
}

app.component.html

<some-com [props]="props" [state]="state" (propsChange)="_propsChange($event)" (propsChange)="_stateChange($event)"></some-com>

app.component.ts

export class AppComponent {
    props: SomeProps = {
        title: 'some title'
    }

    state: SomeState = {
        loading: true
    }

    _propsChange(props: SomeProps){
        console.log(props);
    }

    _stateChange(state: SomeState){
        console.log(state);
    }
}
2.0.9

6 years ago

2.0.8

6 years ago

2.0.7

6 years ago

2.0.6

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.9.9

6 years ago

1.9.8

6 years ago

1.9.7

6 years ago

1.9.6

6 years ago

1.9.5

6 years ago

1.9.4

6 years ago

1.9.3

6 years ago

1.9.1

6 years ago

1.9.0

6 years ago

1.8.9

6 years ago

1.8.8

6 years ago

1.8.7

6 years ago

1.8.6

6 years ago

1.8.5

6 years ago

1.8.4

6 years ago

1.8.3

6 years ago

1.8.2

6 years ago

1.8.1

6 years ago

1.8.0

6 years ago

1.7.9

6 years ago

1.7.8

6 years ago

1.7.7

6 years ago

1.7.6

6 years ago

1.7.5

6 years ago

1.7.4

6 years ago

1.7.3

6 years ago

1.0.7

6 years ago

1.7.1

6 years ago

1.7.0

6 years ago

1.6.9

6 years ago

1.6.8

6 years ago

1.6.7

6 years ago

1.6.6

6 years ago

1.6.4

6 years ago

1.6.3

6 years ago

1.6.2

6 years ago

1.6.1

6 years ago

1.6.0

6 years ago

1.5.9

6 years ago

1.5.8

6 years ago

1.5.7

6 years ago

1.5.5

6 years ago

1.5.4

6 years ago

1.5.2

6 years ago

1.5.1

6 years ago

1.5.0

6 years ago

1.4.9

6 years ago

1.4.8

6 years ago

1.4.7

6 years ago

1.4.6

6 years ago

1.4.5

6 years ago

1.4.4

6 years ago

1.4.3

6 years ago

1.4.2

6 years ago

1.4.1

6 years ago

1.4.0

6 years ago

1.3.9

6 years ago

1.3.6

6 years ago

1.3.5

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.9

6 years ago

1.2.8

6 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.9

6 years ago

1.1.5

6 years ago

1.1.4

6 years ago

1.1.3

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.9

6 years ago

1.0.8

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0-alpha.0

6 years ago