diff --git a/src/connectToStores.js b/src/connectToStores.js index 2a04c37..7c011e2 100644 --- a/src/connectToStores.js +++ b/src/connectToStores.js @@ -91,6 +91,10 @@ function connectToStores(Spec, Component = Spec) { this.storeListeners.forEach(unlisten => unlisten()) }, + getRef() { + return this.refs.component + }, + onChange() { this.setState(Spec.getPropsFromStores(this.props, this.context)) storeDidChange(this.state) @@ -99,7 +103,7 @@ function connectToStores(Spec, Component = Spec) { render() { return React.createElement( Component, - assign({}, this.props, this.state) + assign({ ref: 'component' }, this.props, this.state) ) }, }) diff --git a/test/connect-to-stores-test.js b/test/connect-to-stores-test.js index 73cd780..9be9d54 100644 --- a/test/connect-to-stores-test.js +++ b/test/connect-to-stores-test.js @@ -285,6 +285,32 @@ export default { assert.deepEqual(storeDidChange, {foo: 'Baz'}) }, + 'Component ref can be accessed from WrappedComponent'() { + class ClassComponent5 extends React.Component { + static getStores() { + return [testStore] + } + static getPropsFromStores(props) { + return testStore.getState() + } + isAccessible() { + return true + } + render() { + return + } + } + + const WrappedComponent = connectToStores(ClassComponent5) + + let node = TestUtils.renderIntoDocument( + + ) + + const child = node.getRef() + assert(child.isAccessible() === true) + }, + 'Component receives all updates'(done) { let componentDidConnect = false class ClassComponent3 extends React.Component {