Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/pshev/amnis-preact

⚛️ Preact bindinds for Amnis
https://github.com/pshev/amnis-preact

amnis bindings effects preact redux

Last synced: 26 days ago
JSON representation

⚛️ Preact bindinds for Amnis

Awesome Lists containing this project

README

        


Preact bindings for Amnis

## 🔧 Installation

Assuming you use [npm](https://www.npmjs.com/) as your package manager:
```text
npm install --save amnis-preact
```
If you want to experiment and play around with `amnis-preact` without a module bundler or you don't use one - that's OK.
This package includes precompiled production and development UMD builds.
You can just drop a UMD build as a `` tag on a page. The UMD builds make `amnisPreact` available as a `window.amnisPreact`.
```html
<script type="application/javascript" src="https://unpkg.com/amnis-preact">
```
You can see a basic example in [this jsFiddle](https://jsfiddle.net/petershev/4y24re0u/).

### Usage
The API has two parts: `Provider` to put [`amnis`](http://npm.im/amnis)' store on the context
and `connect` higher-order component (HOC) to hook up your [`preact`](http://npm.im/amnis) components with data and actions.

##### Provider

Wrap your root component in a `Provider` to put amnis' `store` on the context.

```js
import Preact, {h} from 'preact'
import {createStore} from 'amnis'
import {Provider} from 'amnis-preact'
import {Root} from './root'
import {rootReducer} from './reducers'

const store = createStore(rootReducer)

Preact.render((



), document.getElementById('root'))
```

##### connect

`connect` is a simple HOC that is used to hook up your `preact` components with some data from amnis' store and automatically re-render them when that data changes. It is also used to provide event-handlers.


It take only 2 functions:

```js
import {h} from 'preact'
import {connect} from 'amnis-preact'

const CounterApp = ({count, onPlus, onMinus}) =>


{count}


+
-

const mapStateToProps = state => ({
count: state.count
})

const mapDispatchToProps = dispatch => ({
onPlus: () => dispatch({type: 'INCREMENT'}),
onMinus: () => dispatch({type: 'DECREMENT'}),
})

export default connect(mapStateToProps, mapDispatchToProps)(CounterApp)
```

## 🙏 License
MIT