我可以从ReactJs的render()刷新Redux中的state.global.example吗?

时间:2019-06-05 09:40:31

标签: redux react-redux

dev-brothers!

我有一种方法可以更新MongoDB集合,该集合已可以在FE的Redux中访问。

问题是我的“ update”方法删除了该集合中以前聚合的对象/数组(当我尝试在FE上使用全局axios时)。当我尝试从刚刚清除的Redux中提取一些数据时,就会出现错误。

当我刷新页面时,FE再次要求BE进行收集,并且旧的好聚合将再次附加到更新的数据上,并再次以Redux state.global进行存储。

问题:触发更新集合的调用后,可以在方法中刷新Redux(state.global.example)吗?


=============== S O L U T I O N =================

1。效果不错,但效果最好:我编写了callback()来刷新父组件中的集合,该父组件映射到Redux中更新后的集合。

2。效果更好:我已经清理了后端聚合-所有相同的查找,展开和排序都在同一函数中;非常重要-BE仅响应一个已更新对象,而不是第一个解决方案中的整个集合。

=============== S O L U T I O N =================

import React from 'react';
import { connect } from 'react-redux';
import { upds } from "../../../actions/global/global";
import { Button } from 'reactstrap';

class myProj extends React.Component {

  render () {

    const { mycollection } = this.props

    var valueToUpdate = "My new value";

    var myUpdate = (valueToUpdate) => {
      var beData = Object.assign({}, mycollection, { key_to_update: valueToUpdate });
      delete beData.aggregate1;
      delete beData.aggregate2;
      delete beData.aggregate3;
      this.props.onUpds("mycollection", beData);
    };

    return (

      <React.Fragment>

        <Button onClick={() => this.myUpdate("my new value")}><p>UPDATE</p></Button>

        {myCollection}

      </React.Fragment>
    );
  };
};

const mapStateToProps = state => {
  return {
    mycollection: state.global.mycollection
  }
};

const mapDispatchToProps = dispatch => {
  return {
    onUpds: (objName, obj, cbk) => dispatch(upds(objName, obj, cbk))
  };
};

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

0 个答案:

没有答案