是否有机会将组件用作 React-Native 上的全局活动指示器



有没有机会将组件用作全局活动指示器,该组件具有透明颜色,并且是由我在 React-Native 上创建的?

详:

  • 我使用 redux 存储来更新 UI。所以我打算通过更新商店来显示活动指示器。
  • 我创建了一个名为 ActIndicatorActivityIndicator 组件。
  • 我有一个包含该应用程序的主要App组件。
  • 我有一个包装ActIndicatorApp组件的Root组件。

组件render方法Root最终代码如下所示:

render() {
    if (this.state.showActivityIndicator) {
        return(
            <ActIndicator>
                <App />
            </ActIndicator>
        )
    }
    return (</App>)
}

我已经尝试了几种方法,但我不能成功。

我想我的大脑停止了。

我也猜可能是逻辑错误。

const withLoadingOverlay = (Component) => class withLoadingOverlayView extends React.Component {   props: withLoadingOverlayProps
    // Indicator view styles   loadingOverlay = (style) => (
        <View style={[style, styles.someDefaultStyles]}>
          <ActivityIndicator color={someColor} size="large" />
        </View>   )
      render() {
        const { pending, ...passProps } = this.props;
        const { width, height } = Dimensions.get('window');
        return (
          <View style={{ flex: 1 }}>
            <Component {...passProps} />
            {pending && this.loadingOverlay({ width, height })}
          </View>
        );   } };

我曾经用 HOC 和 redux 操作包装整个容器,以在启动挂起的 prop true 和成功时或失败时设置为 false,因此这个 prop 将被 HOC 使用,并且只有在挂起设置为 true 时才会显示指示器。

在容器中,您必须在连接中包装组件

export default connect(
  (state) => ({ 
    pending: state.reducer.pending, // pending prop should be here
  }),
  (dispatch) => ({ dispatching redux actions })
)(withLoadingOverlay(WrappedComponent));
我认为

你不应该像小时候通过 App,我使用它的方式更像是这样的:

render() {
if (this.state.showActivityIndicator) {
    return(
      <View>
        <ActivityIndicator />
        <App />
      </View>
    )
}
return (<App />)
}

但是最好这样设置:

render() {
  return (
    <View>
      <ActivityIndicator animating={this.state.showActivityIndicator} />
      <App />
    </View>
  )
}

相关内容

  • 没有找到相关文章

最新更新