6

我在我的项目中使用 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>;
};
4

2 回答 2

6

像这样?

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

let Parent = () => (
  <ApiSubscribe>
    {api => <Child api={api} />}
  </ApiSubscribe>
)
于 2018-07-28T19:15:20.620 回答
1

你可以创建一个 HOC 来包装你的组件,然后将容器从 HOC 组件以 props 的形式传递给子组件。

于 2019-01-29T01:18:39.063 回答