如何在render()中没有spinner组件的情况下显示反应微调器

时间:2018-04-12 10:37:14

标签: javascript android react-native

我想在反应应用程序中显示微调器而不在render()中编写一些代码,就像在android原生进程对话框中一样。

目前我将此行添加到我的render()

<Spinner visible={this.state.spinnerVisible} />

如果我想要显示或隐藏微调器,请更改状态spinnerVisible

这个方法只需要从任何地方调用java android。

public static void showProDialog(Context context, String text) {
    try {
        ProgressDialog progressDialog = null;
        progressDialog = new ProgressDialog(context);
        progressDialog.setCancelable(false);
        progressDialog.setMessage(text);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressDialog.setProgress(0);
        progressDialog.show();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

有可能做这样的事吗?所以我不需要在任何地方维持状态。

1 个答案:

答案 0 :(得分:3)

如果你不想在任何地方维持状态,你可以让Spinner保持自己的状态:

class Spinner extends Component {
  show () {
    this.setState({ visible: true })
  }
  hide () {
    this.setState({ visible: false })
  }
}

在根视图中添加一个Spinner

export const spinner = React.createRef()

class MyApp extends Component {
  render () {
    return (
      <View>
        {/* your app content */}
        <Spinner ref={spinner} />
      </View>
  }
}

如果您想要显示微调器,只需import { spinner } from './MyApp.js'并调用spinner.show()