javascript - 你将如何实现一个微调器组件来表明在 React 中有一个 http 请求的事实?
问题描述
我有一个看起来像这样的微调器组件:
import React, { PropTypes } from 'react';
class Spinner extends React.Component {
constructor(props) {
super(props);
this.state = {
loading: false
}
}
render() {
return (
<div className="spinner"
style={{ display: this.state.loading ? "block" : "none" }}>
<span>Spinning to signal http loading...</span>
</div>
);
}
}
export default Spinner;
现在,我想知道通知该组件 http 调用已打开/关闭的可扩展方式是什么。这样的通知过程应该更改state.loading
为true|false
并因此显示/隐藏微调器。
我希望你明白我的意思。这不是一个明显的问题/解决方案。触发存储的操作是应用程序(嵌套组件)每个级别的问题,并且将状态提升到主控制器组件以跟踪 http 的开启/关闭并不是特别易于管理。事实上,这需要(从顶部组件)传递给每个能够分派动作的组件,一个作为 prop 的函数,它执行以下操作:
function() {
// `this` refers to the main/top component
this.setState({
loading: true
})
}
我还在考虑从商店(基本上是EventEmitter
实例)发出事件并从其本身监听Spinner
然后从那里更改state.loading
属性。
但老实说,我对这两种解决方案都不满意。在你看来,这是一种非常 React 的方式吗?
谢谢
解决方案
推荐阅读
- c - 将第二个字符串放在第一个字符串上用户输入的位置
- reactjs - 在 React JS 组件中设置默认状态值的简单方法
- tensorflow - 在训练期间监控权重稀疏度
- php - 文件“phinx.yml”不存在
- node.js - 在 Node.js 中使用不同的方法发出多个 Https 请求
- jquery - jquery 在新创建的 mvc 项目的索引页面上不起作用
- supervisord - 当我使用 supervisorctl stop [running-program] 时会发生什么?
- cmd - 我可以在 cmd 中打开一个 pdf 名称中带有“空格”的 pdf 吗?
- json - 如何仅从 json 中获取值以输入 ng-2 图表?
- python - 具有标准 Tensorflow 的 Tensor Flow Lite 模型