0.3.1 • Published 3 months ago

mobx-react-helper v0.3.1

Weekly downloads
-
License
LGPL-3.0-or-later
Repository
github
Last release
3 months ago

MobX React helper

MobX helper library for React component engine, with TypeScript Class & Decorator supports.

MobX compatibility NPM Dependency CI & CD

NPM

Versions

SemVerstatusES decoratorMobX
>=0.3.0✅developingstage-3>=6.11
<0.3.0❌deprecatedstage-2>=4 <6.11

Usage

Installation

npm i mobx react \
    mobx-react \
    mobx-react-helper

Configuration

tsconfig.json

Compatible with MobX 6/7:

{
    "compilerOptions": {
        "target": "ES6",
        "moduleResolution": "Node",
        "useDefineForClassFields": true,
        "experimentalDecorators": false,
        "jsx": "react-jsx"
    }
}

Observable Props & State

import { computed } from 'mobx';
import { observer } from 'mobx-react';
import { observePropsState } from 'mobx-react-helper';
import { Component } from 'react';

export interface MyComponentProps {
    prefix: string;
}

interface State {
    text: string;
}

@observer
@observePropsState
export class MyComponent extends Component<MyComponentProps, State> {
    state: Readonly<State> = {
        text: ''
    };

    declare observedProps: MyComponentProps;
    declare observedState: State;

    @computed
    get decoratedText() {
        return this.observedProps.prefix + this.observedState.text;
    }

    render() {
        return <p>{this.decoratedText}</p>;
    }
}

Abstract Form component

import { observer } from 'mobx-react';
import { FormComponent, observePropsState } from 'mobx-react-helper';
import { ChangeEvent } from 'react';

@observer
@observePropsState
export class MyField extends FormComponent {
    handleChange = ({
        currentTarget: { value }
    }: ChangeEvent<HTMLInputElement>) => {
        this.innerValue = value;

        this.props.onChange?.(this.innerValue);
    };

    render() {
        const { onChange, ...props } = this.props,
            { value, handleChange } = this;

        return (
            <>
                <input {...props} onChange={handleChange} />

                <output>{value}</output>
            </>
        );
    }
}
0.3.0

3 months ago

0.3.1

3 months ago

0.2.1

8 months ago

0.2.7

8 months ago

0.2.6

8 months ago

0.2.3

8 months ago

0.2.2

8 months ago

0.2.5

8 months ago

0.2.4

8 months ago

0.2.0

9 months ago