【问题标题】:Adding values to a map state object one at a time一次向地图状态对象添加值
【发布时间】:2020-08-05 22:45:39
【问题描述】:

我有一张地图作为状态对象,如下所示

this.state = {
      imgSrcs: new Map([])
    }

我的要求是通过在 url 列表上多次调用 fetch() 方法从 componentDidMount() 方法将数据添加到此映射中。这些地图值将用于使用图像组件填充数据表的列。

我对几点感到困惑

  • 如何在地图中一一添加数据
  • 我可能不得不调用嵌套提取,这是否会由于存在嵌套承诺而导致更新地图时出现任何问题
  • 是否可以在插入密钥之前使用 this.state.imgSrcs.get('key') 填充列

请帮助我理解,如果需要更多详细信息,请告诉我。

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    以下是我对您的问题的看法。

    1. 如何在地图中一一添加数据。

    ** React 检测状态中的引用变化以刷新组件。假设您需要在按钮点击中更新状态,下面是点击功能。

    function buttonClick() {
      const temp = new Map(imgSrcs);
      temp.set('newKey', 'newValue');
      this.state({imgSrcs: temp});
    }
    
    1. 我可能不得不调用嵌套提取,这是否会由于嵌套承诺的存在而导致更新地图出现任何问题?

    ** 在嵌套的 fetch/API 调用中更新状态应该不是问题。但是如果可以的话,我建议在最里面的 fetch 调用中只更新一次状态。所以这只会更新一次组件。

    1. 是否可以在插入密钥之前使用 this.state.imgSrcs.get('key') 填充列?

    ** 不确定这个问题,但imgSrcs 没有填充,那么你不能。

    希望对你有帮助。

    【讨论】:

    • 感谢您的信息。所以new Map(imgSrcs) 将保留地图中已经添加的现有值。关于第三点,我的意思是说他的地图值需要在某处使用,我必须事先添加占位符,例如 render() { return( <div> {this.state.imgSrcs.get('key')} </div> ) } ,那么它将如何工作。
    猜你喜欢
    • 1970-01-01
    • 2020-04-07
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多