首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >redux/react将状态映射到具有大量数据队列状态更新的属性

redux/react将状态映射到具有大量数据队列状态更新的属性
EN

Stack Overflow用户
提问于 2019-01-11 22:37:49
回答 1查看 440关注 0票数 1

使用套接字监听服务器;Redux存储不断更新数千条数据记录。更新存储只需要几秒钟的时间,数千个对象通过操作进行调度。然而,使用redux connect函数通过mapStateToProps将状态映射到我的组件,似乎会将状态更改排入队列,并以大约每秒7-10条记录的速度更新组件的状态。这意味着React组件需要很长时间才能呈现。有什么解决方案可以加速这一过程吗?此外,确切的数据量总是在变化,并且没有固定的数据量。

下面是我的组件:

代码语言:javascript
运行
复制
class TestComponent extends Component {
  state = {};

  componentDidMount() {
    this.props.connectToSocket();
  }

  render() {
    const { classes, width, people, vehicles, incidents, locations } = this.props;

    return (
      <div>
         Hello
      </div>
    );
  }
}

TestComponent.propTypes = {
  classes: PropTypes.object.isRequired
};

const mapStateToProps = state => {
  console.log(state);
    return {
      people: state.live.people,
      vehicles: state.live.vehicles,
      incidents: state.live.incidents,
      locations: state.live.locations
    }
};

const mapDispatchToProps = {
  connectToSocket: connectToSocket
};

export default connect(mapStateToProps,mapDispatchToProps(TestComponent));

初始化套接字的操作在componentDidMount()函数中执行。然后,我可以在控制台中看到打印的状态,但是,它每秒打印大约7-10条新记录的更新。由于在很短的时间内对存储进行了超过5000次更新,将redux存储映射到组件的道具需要更长的时间,并且需要5分钟以上的时间来呈现组件。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-12 03:31:53

通常,这里的答案涉及到某种形式的批处理:

  • 您可以对来自套接字的数据进行批量处理,这样,您可以分派5个每个值为N/5的操作,而不是分派N个操作,每个操作的值为1。
  • 您可以使用各种批处理中间件或存储增强器之一来减少Redux subscription socket的数量

有关更多想法和链接,请参阅Redux FAQ entry on reducing the number of store update events

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54148646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档