1.0.5 • Published 5 years ago

with-item-events v1.0.5

Weekly downloads
2
License
MIT
Repository
github
Last release
5 years ago

with-item-events

Make any DOM events handler more powerful and Specification with simple way

NPM JavaScript Style Guide

Install

npm install --save with-item-events

Table of Contents

Quick Start

import React, { useCallback, useState } from 'react';
import withItemEvents from 'with-item-events';
const ItemOne = withItemEvents(
    (props) => {
        const { onChange, item, onTestClick, id } = props;
        return (
            <div onClick={onChange} data-id={id}>
                <p>{`Click me to show item's name`}</p>
                <p>
                    <b>{item.name}</b>
                </p>
                <div onClick={onTestClick}>
                    <p>{`Click this to show  name:value`}</p>
                    <p>{`itemPayloadId${item.id}`}</p>
                    <p>{`propId${id}`}</p>
                </div>
            </div>
        );
    },
    [ { actionType: 'onTestClick', isStopPropagation: true }, { actionType: 'onTestClick', isStopPropagation: true } ]
);
const App = () => {
    const [ { item: stateItem }, setState ] = useState({ item: {} });
    const [ { x, y }, setPoint ] = useState({});
    const _onChange = useCallback((e, data) => {
        switch (data.actionType) {
            case 'onTestClick':
                setPoint(data.point);
                break;
            default:
                setState(data);
                break;
        }
    }, []);

    return (
        <div style={{ padding: '20px' }}>
            <h2>Item</h2>
            <ItemOne name='point' value={{ x: 1, y: 2 }} onChange={_onChange} onTestClick={_onChange} actionType='deleteItem' item={{ name: 'test', id: 1 }} id='1' />
            <h2>Result</h2>
            <p>
                {`item's name:`}
                {stateItem.name}
            </p>
            <div>
                <p>
                    {`x:`}
                    {x}
                </p>
                <p>
                    {`y:`}
                    {y}
                </p>
            </div>
        </div>
    );
};
export default App;

ScreenShot

  • Step 1 Init state `Step 1`
  • Step 2 Click name : value `Step 2`
  • Step 3 Click items's name `Step 3`

Usage

NOTE: React hooks require react and react-dom version 16.8.0 or higher.

Related projects

Plan

  • TypeScript
  • validation of HOC prop

Change Log

1.0.1

  • add unit test
  • add two commnad events onBlur and onFocus as default

Thanks

This repo was setup with the help of the excellent create-react-library and redux-react-hook.

Contributing

Zach Yu zachyu.tw@gmail.com

License

MIT © zachyutw

1.0.5

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago