effector-react
React bindings for effector
Installation
npm install --save effector effector-react
Or using yarn
yarn add effector effector-react
Usage
import {createStore, combine, createEvent} from 'effector'
import {useStore} from 'effector-react'
const inputText = createEvent()
const text = createStore('').on(inputText, (state, payload) => payload)
const size = createStore(0).on(inputText, (state, payload) => payload.length)
const form = combine({
text,
size,
})
const Form = () => {
const {text, size} = useStore(form)
return (
<form>
<input
type="text"
onChange={e => inputText(e.currentTarget.value)}
value={text}
/>
<p>Length: {size}</p>
</form>
)
}
Try it
useStore in docs
createStore in docs
combine in docs
createEvent in docs
effector-react 21.1.0
- Add support for object and array of events to
useEvent
. It's a shorthand for calling several useEvent
at once (PR #425 by @sergeysova)
export function ExampleComponent() {
const handlers = useEvent({emailChanged, passwordChanged})
return (
<div>
<input onChange={handlers.emailChanged} />
<input onChange={handlers.passwordChanged} />
</div>
)
}
export function ExampleComponent() {
const [changeEmail, changePassword] = useEvent([
emailChanged,
passwordChanged,
])
return (
<div>
<input onChange={changeEmail} />
<input onChange={changePassword} />
</div>
)
}