React ref returns a 'Connect' object instead of DOM

It seems like Post is a connected component, while you actually want the wrapped one.

react-redux ≥ 6.0.0

Connect with forwardRef: true

connect(null, null, null, { forwardRef: true })(Post);

then add a ref normally:

ref={ref => this.<id> = ref}

From the docs:

If {forwardRef : true} has been passed to connect, adding a ref to the connected wrapper component will actually return the instance of the wrapped component.




react-redux < 6

Connect with withRef: true

connect(null, null, null, { withRef: true })(Post);

then use getWrappedInstance() to get the underlying connected component:

this.refs[<id>].getWrappedInstance()

From the docs:

[withRef] (Boolean): If true, stores a ref to the wrapped component instance and makes it available via getWrappedInstance() method. Default value: false


An alternative way to do this would be to use some other prop name (other than ref). For example:

<Post
  ...
  innerRef={(node) => { this.myRef = node; }}
/>

This also works if you're using a library like styled-components or emotion