Как использовать реакцию, не указанную вне метода рендера?

Я использую библиотеку ustated в своем проекте.

В методе рендеринга я использую set как это:

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

Как я могу позвонить api.setMessage Вне рендера? Например в componentDidMount?

ApiSubscribe это:

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>;
};

1 ответ

Как это?

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

let Parent = () => (
  <ApiSubscribe>
    {api => <Child api={api} />}
  </ApiSubscribe>
)

Вы можете создать HOC, чтобы обернуть ваш компонент, а затем передать контейнер от компонента HOC дочернему компоненту в форме реквизита.

Другие вопросы по тегам