0.2.0-alpha.2 • Published 1 year ago
@phoenix-islands/react v0.2.0-alpha.2
@phoenix-islands/react
Phoenix Islands is a library for creating islands of various frontend frameworks in Phoenix LiveView.
Install
cd assets
npm i react @phoenix-islands/react
Or
yarn add @phoenix-islands/react
Usage
1. Install elixir library
Follow instruction here to install server part
2. Create an island component
Note You might want to add './js/**/*.ts?'
to tailwind.config.js
if you want to use typescript.
import { ReactIslandProps, useStore } from '@phoenix-islands/react'
import React from 'react'
export const ReactCounter = ({
store,
children,
pushEvent
}: ReactIslandProps<{ counter: number }>) => {
const data = useStore(store)
const [counter, setCounter] = React.useState(data.counter)
React.useEffect(() => setCounter(data.counter ?? 0), [data.counter])
return (
<div className='w-full flex flex-col gap-3 items-stretch p-4 rounded-lg border-dashed border-zinc-500 border-2'>
<div className='flex flex-row gap-3 items-center justify-between'>
<div>Client State: {counter}</div>
<button
className='phx-submit-loading:opacity-75 rounded-lg bg-zinc-900 hover:bg-zinc-700 py-2 px-3 text-sm font-semibold leading-6 text-white active:text-white/80'
onClick={() => {
setCounter(counter + 1)
pushEvent('update_counter', { counter: counter + 1 })
}}
>
Client +1
</button>
</div>
<div className='p-3 rounded-lg border-dashed border-zinc-300 border-2'>
{children}
</div>
</div>
)
}
3. Register the component with live-view hooks
import { registerReactIsland } from '@phoenix-islands/react'
let liveSocket = new LiveSocket('/live', Socket, {
params: { _csrf_token: csrfToken },
hooks: {
...registerReactIslands({ ReactCounter })
}
})
License
A project by Usage © 2023.
0.1.30
1 year ago
0.1.31
1 year ago
0.1.10
1 year ago
0.1.11
1 year ago
0.1.12
1 year ago
0.1.13
1 year ago
0.1.14
1 year ago
0.1.15
1 year ago
0.2.0-alpha.2
1 year ago
0.1.27
1 year ago
0.1.28
1 year ago
0.1.29
1 year ago
0.1.20
1 year ago
0.1.21
1 year ago
0.1.22
1 year ago
0.1.23
1 year ago
0.1.24
1 year ago
0.1.25
1 year ago
0.1.0
1 year ago
0.1.2
1 year ago
0.1.1
1 year ago
0.1.16
1 year ago
0.1.8
1 year ago
0.1.17
1 year ago
0.1.7
1 year ago
0.1.18
1 year ago
0.1.19
1 year ago
0.1.9
1 year ago
0.1.4
1 year ago
0.1.3
1 year ago
0.1.6
1 year ago
0.1.5
1 year ago
0.0.13
1 year ago
0.0.10
1 year ago
0.0.11
1 year ago
0.0.12
1 year ago
0.0.9
1 year ago
0.0.8
1 year ago
0.0.7
1 year ago
0.0.6
1 year ago
0.0.5
1 year ago
0.0.4
1 year ago
0.0.3
1 year ago
0.0.2
1 year ago
0.0.1
1 year ago