iframe-interface
TypeScript icon, indicating that this package has built-in type declarations

0.0.3 • Public • Published

iframe-interface

version npm downloads MIT License

iframe-interface helps you to register and call api between iframe. Support async.

English | 中文

GetStarted

yarn add iframe-interface

Basic Usage

iframe-interface separate api into 3 stage: factory => interface => call. Which is inherited from axios-interface (Another helpful api tool widely used by our team).

import {createFactory} from 'iframe-interface';

const {setIframe, createCall} = createFactory({side: 'host'});

const Component = () => <iframe src="https://example.com" ref={setIframe} />;

// define api
const getUsersFromIframe = createCall<Params, Result>('getUsers');

// call
const result = await getUsers({companyId: '1', keyword: 'jack'});
  • guest side
import {useCallback, useEffect} from 'react';
import {createFactory} from 'iframe-interface';

const {registerCallHandler} = createFactory({side: 'guest'});

// register api at global
registerCallHandler('getUsers', handle);

// or register api at component
const Component = () => {
    const handle = useCallback(
        async (params: Params) => {
            const result = await something();
            return result;
        },
        [],
    )
    useEffect(
        () => {
            registerCallHandler('getUsers', handle);
        },
        [],
    );
    return null;
}

registerCallHandler at host side and createCall at guest side is also allowed. Put them at the opposite sides and it will work.

Further

Lifecycles like onResolve are not implemented yet since I think it may not be necessary. If you have some common issue and you want it be implemented in iframe-interface, please open an issue.

Readme

Keywords

none

Package Sidebar

Install

npm i iframe-interface

Weekly Downloads

0

Version

0.0.3

License

MIT

Unpacked Size

7.13 kB

Total Files

4

Last publish

Collaborators

  • dancerphil