如何在React

时间:2015-10-08 11:10:05

标签: reactjs reactjs-flux flux

我的应用结构如下(HighOrderComponent是Alt' AltContainer包装器:

<App>
    <HighOrderComponent store={someStore...}>
        <MyCanvasComponent ref="canvasRef" />
    </HighOrderComponent>
</App>

我需要从collectData()公开MyCanvasComponent方法,因为在App组件中单击按钮后,画布需要将其内容转换为base64图像。

我希望在button click处理程序中能够使用this.refs.canvasRef.collectData()

不幸的是,似乎没有考虑嵌套组件refs。我知道一般refs应该被认为是私人的(即属于HighOrderComponent),但是 -

  1. 它们也不可用,这意味着如果我分配ref="highOrderComponentRef",那么this.refs.highOrderComponentRef就可以了,但this.refs.highOrderComponentRef.refs.canvasRef不会。

    < / LI>
  2. HighOrderComponent是一个通用组件,因此不知道它的孩子会是什么。

  3. this.props.children上的HighOrderComponent属于ReactElement类型,它是轻量级的,不会公开其方法。

    到目前为止,唯一的解决方案是传递MyCanvasComponent一个回调函数,它将自动发送一个回调函数并保存一个引用,但这很乏味,而且根据React 0.13 release notes

      

    ref ref order稍微改变,以便在调用componentDidMount方法后立即获得组件的引用;只有当您的组件在componentDidMount中调用父组件的回调时,才应观察到此更改,这是一种反模式,无论如何都应该避免

0 个答案:

没有答案