Added usePlugin hooks

Summary:
`usePlugin(pluginFactory)` returns the current plugin instance's api that was exposed by the plugin directory.

Passing `pluginFactory` is technically strictly not needed, but having the user pass it, we can make sure it is strongly typed

Reviewed By: nikoant

Differential Revision: D22286293

fbshipit-source-id: 4268b6849b8cd3d524103de7eadbd6c0a65c7a61
This commit is contained in:
Michel Weststrate
2020-07-01 08:58:40 -07:00
committed by Facebook GitHub Bot
parent 952e929699
commit 159c0deaf1
5 changed files with 44 additions and 8 deletions

View File

@@ -9,6 +9,7 @@
import * as React from 'react';
import {FlipperClient} from '../plugin/Plugin';
import {usePlugin} from '../plugin/PluginContext';
type Events = {
inc: {
@@ -67,6 +68,11 @@ export function plugin(client: FlipperClient<Events, Methods>) {
}
export function Component() {
// TODO T69105011 add test for usePlugin including type assertions
return <h1>Hi from test plugin</h1>;
const api = usePlugin(plugin);
// @ts-expect-error
api.bla;
// TODO N.b.: state updates won't be visible
return <h1>Hi from test plugin {api.state.count}</h1>;
}