Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use react unstated outside of render method?

I am using ustated library in my project.

In render method, I am using set like this:

render() {
    return (
            <ApiSubscribe>
                {api => (
                    <button content='CLICK ME' onClick={() => api.setMessage('RENDER CLICK')} />
                )}
            </ApiSubscribe>
    )
}

How can I call api.setMessage OUTSIDE of render? For example in componentDidMount ?

ApiSubscribe is:

export const ApiSubscribe = props => {
    // We also leave the subscribe "to" flexible, so you can have full
    // control over your subscripton from outside of the module
    return <Subscribe to={props.to || [Api]}>{props.children}</Subscribe>;
};
like image 911
gaijebou Avatar asked Jul 28 '18 18:07

gaijebou


2 Answers

Like this?

class Child extends Component {
  componentDidMount() {
    this.props.api.setMessage('hey')
  }
  render {...}
]

let Parent = () => (
  <ApiSubscribe>
    {api => <Child api={api} />}
  </ApiSubscribe>
)
like image 102
azium Avatar answered Sep 28 '22 08:09

azium


You can create a HOC to wrap your component, then pass the container from the HOC component to the child component in the form of props.

like image 24
ttfreeman Avatar answered Sep 28 '22 09:09

ttfreeman