Very simple shared state for your react app.
import React from 'react'
import { createProvider, SharedStore } from 'react-shared-state'
class NameStore extends SharedStore {
setName = (newName) => this.setState({name: newName})
}
const NameProvider = createProvider(NameStore)
const HelloComponent = (props) => {
return <div>
<h1> Hello, {props.name} </h1>
<button onClick={() => props.store.setName('Luke Skywalker')}>Set Name</button>
</div>
}
const Hello = NameProvider.connect((store) => ({
name: store.state.name,
store: store
}))(HelloComponent)
export function App() {
return (
<NameProvider initialState={{ name: 'Anonymous' }}>
<Hello />
</NameProvider>
)
}
yarn add react-shared-state
or
npm install react-shared-state
https://soofty.gitbook.io/react-shared-state/quickstart
https://soofty.gitbook.io/react-shared-state/documentation
https://codesandbox.io/s/wy308n0k88
- mapStateToProps now accepts
store
instead ofstore.state
as first argument connect
no longer passesstore
by it's name to a component- Preferable way to use connect is
YourProvider.connect
instead of building custom function - Changed Typescript's generics order from TOuterProps, TInnerProps to TInnerProps, TOuterProps (recompose format)
getProvider replaced with createProvider(StoreClass?: class, storeId?: string)