almin-react-container
React bindings for Almin.
Install
Install with npm:
npm install almin-react-container
Usage
create(component, context): React.Component
It create container component that is wrap component
.
The component
can receive context.getState
of Almin via this.props
.
import React from "react";
import ReactDOM from "react-dom";
import AlminReactContainer from "almin-react-container";
import { Dispatcher, Context, Store } from "almin";
class MyState {
constructor({value}) {
this.value = value;
}
}
class MyStore extends Store {
constructor() {
super();
this.state = new MyState({
value: "Hello World!"
});
}
getState() {
return {
myState: this.state
};
}
}
const context = new Context({
dispatcher: new Dispatcher(),
store: new MyStore()
});
class App extends React.Component {
render() {
return <div>{this.props.myState.value}</div>
}
}
const RootContainer = AlminReactContainer.create(App, context);
ReactDOM.render(<RootContainer />, document.getElementById("js-app"));
TypeScript example:
import * as React from "react";
import * as ReactDOM from "react-dom";
import { Dispatcher, Context, Store, StoreGroup } from "almin";
import { AlminReactContainer } from "almin-react-container";
class MyState {
value: string;
constructor({ value }: { value: string }) {
this.value = value;
}
}
class MyStore extends Store<MyState> {
state: MyState;
constructor() {
super();
this.state = new MyState({
value: "Hello World!"
});
}
getState() {
return this.state;
}
}
const storeGroup = new StoreGroup({
myState: new MyStore()
});
const context = new Context({
dispatcher: new Dispatcher(),
store: storeGroup
});
type AppState = typeof storeGroup.state;
class App extends React.Component<AppState> {
render() {
return <div>{this.props.myState.value}</div>;
}
}
const RootContainer = AlminReactContainer.create(App, context);
ReactDOM.render(<RootContainer />, document.body);
For more details, see Example/.
For TypeScript user, see almin-react-container-test.tsx.
Changelog
See Releases page.
Running tests
Install devDependencies and Run npm test
:
npm i -d && npm test
Contributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
Author
License
MIT © azu