# react-data-binding **Repository Path**: mirrors_yiminghe/react-data-binding ## Basic Information - **Project Name**: react-data-binding - **Description**: React Data Binding Library - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-19 - **Last Updated**: 2026-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # react-data-binding --- do react data binding in an easy way. inspired by redux. [![NPM version][npm-image]][npm-url] [![build status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] [![gemnasium deps][gemnasium-image]][gemnasium-url] [![node version][node-image]][node-url] [![npm download][download-image]][download-url] [npm-image]: http://img.shields.io/npm/v/react-data-binding.svg?style=flat-square [npm-url]: http://npmjs.org/package/react-data-binding [travis-image]: https://img.shields.io/travis/yiminghe/react-data-binding.svg?style=flat-square [travis-url]: https://app.travis-ci.com/github/yiminghe/react-data-binding [coveralls-image]: https://img.shields.io/coveralls/yiminghe/react-data-binding.svg?style=flat-square [coveralls-url]: https://coveralls.io/r/yiminghe/react-data-binding?branch=master [gemnasium-image]: http://img.shields.io/gemnasium/yiminghe/react-data-binding.svg?style=flat-square [gemnasium-url]: https://gemnasium.com/yiminghe/react-data-binding [node-image]: https://img.shields.io/badge/node.js-%3E=_0.10-green.svg?style=flat-square [node-url]: http://nodejs.org/download/ [download-image]: https://img.shields.io/npm/dm/react-data-binding.svg?style=flat-square [download-url]: https://npmjs.org/package/react-data-binding ## examples http://yiminghe.github.io/react-data-binding work with redux: http://yiminghe.github.io/react-data-binding/examples/redux.html ```js @createContainer({ // specify data need to be concerned myUser: 'user' }) class User extends Component { @autobind onClick(e) { e.preventDefault(); // trigger re render this.props.setStoreState({ // better use immutable.js user: { name: 'updated: ' + Date.now() } }); } render() { return ({this.props.myUser.name}); } } @createRootContainer({ // initial app data user: { name: 'initial' } }) class App extends React.Component { render() { return ; } } ReactDOM.render(, document.getElementById('__react-content')); ``` ## api ### Store build in Store class, you can extend it to create your own store(such as redux store with reducer/dispatch). ### createRootContainer(initialAppData: Object|Store, option: {storeName='store'}): (Function(WrappedComponent:ReactComponent):ReactComponent) bind the initial global store state to react root component and generate a high order React Component. will save global store to this.context[storeName]. ### createContainer(selector: Object|Function, option: {pure=true, mapStoreProps:Function():Object, storeName='store'}): (Function(WrappedComponent:ReactComponent):ReactComponent) bind the subset of store state to react child component and generate a high order React Component. will receive this.context[storeName] as global store. WrappedComponent will receive the specified subset of store state and return value of option.mapStoreProps(store) as props. default mapStoreProps will generate the following props: #### setStoreState(state: Object) update the global store state and re render react child components which bind to the specified subset of store state. #### getStoreState() get the global store state. use with caution. #### batchStore(callback: Function): Function return a function which will batch setStoreState calls inside callback. ## Test Case http://localhost:8111/tests/runner.html?coverage ## Coverage http://localhost:8111/node_modules/rc-server/node_modules/node-jscover/lib/front-end/jscoverage.html?w=http://localhost:8001/tests/runner.html?coverage ## License react-data-binding is released under the MIT license.