小编Sha*_*har的帖子

如何在React中获取对嵌套子项的引用

我的app结构如下(HighOrderComponent是Alt的AltContainer包装器):

<App>
    <HighOrderComponent store={someStore...}>
        <MyCanvasComponent ref="canvasRef" />
    </HighOrderComponent>
</App>
Run Code Online (Sandbox Code Playgroud)

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

我想,在buttonclick处理程序,才能够使用this.refs.canvasRef.collectData().

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

  1. 它们也不可用,这意味着如果我分配一个ref="highOrderComponentRef"然后this.refs.highOrderComponentRef会工作但this.refs.highOrderComponentRef.refs.canvasRef不会.

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

this.props.childrenHighOrderComponentReactElement轻量且不会暴露自己的方法类型.

到目前为止唯一的解决方案是传递MyCanvasComponent一个回调函数,它将自己发送一个回调函数并保存一个引用,但是根据React 0.13发行说明,这很乏味且反对最佳实践

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

flux reactjs reactjs-flux

5
推荐指数
0
解决办法
2258
查看次数

什么是swift中的'()'类型?

我收到一个传递类型参数的事件().

这是一个空元组..?

我指的是这种表达方式:

let x = ()

swift

5
推荐指数
1
解决办法
147
查看次数

立即重新抛出catch块并最终使用

我有一个负责日志记录操作的包装器,名为OperationWrapper.它的结构简单,如下:

public void runOperation(Operation o) throws Exception{ 
     logOperationStarted();
     o.execute();
     logOperationFinished();
}
Run Code Online (Sandbox Code Playgroud)

由于"o"操作可以抛出异常,因此logOperationFinished()不会始终调用该方法,因此日志记录无法正常运行.

此外,调用该runOperation()方法的各种组件处理这些异常.

我想确保logOperationFinished()始终运行,我实现了以下结构:

public void runOperation(Operation o) throws Exception{ 
     logOperationStarted();
     try{
       o.execute();
     }
     catch(Exception e){
       throw e; 
     }
     finally{
       logOperationFinished();
     }
}
Run Code Online (Sandbox Code Playgroud)

现在logOperationFinished()总是运行,但我收到IntelliJ的警告:

立即重新捕获捕获的异常
报告任何捕获块,其中立即重新捕获捕获的异常,而不对其执行任何操作.这种 捕获块是不必要的或缺乏错误处理.

对我来说,似乎IntelliJ在发出此警告时没有考虑finally块.

我做错了什么还是有更好的方法来实现这个目标?

谢谢.

java intellij-idea try-catch-finally rethrow

2
推荐指数
2
解决办法
1719
查看次数

UIImageView 自动创建的内容大小自动布局约束与尾随/前导约束重叠

我有一个 UIImageView (它实际上是一个 FLAnimatedImageView)。我使用自动布局来设置其约束以占据整个屏幕。这在 iPhone 中效果很好,但在 iPad 中,自动创建的内容限制(如图所示)导致它只占用部分屏幕尺寸。

我不明白为什么要创建这些约束,如果确实需要它们,为什么不遵守尾随/前导约束?

限制条件

图像仅占据屏幕的部分尺寸

xcode ios autolayout swift

2
推荐指数
1
解决办法
1683
查看次数