代码之家  ›  专栏  ›  技术社区  ›  aaayumi

使用Lodash将对象转换为数组。映射并在React中使用映射函数

  •  0
  • aaayumi  · 技术社区  · 7 年前

    我使用时遇到问题 map 函数中的函数可以对数据进行迭代,因为数据是对象。所以我试着用 _.map Lodash的功能是将对象转换为数组。然后我想使用 地图 作用

    它没有像我预期的那样工作,我想知道是什么问题。

    它应该工作吗?可以使用 _.地图 在React中迭代?

    数据结构 enter image description here

    代码

    import React, { Component } from 'react';
    import { connect } from "react-redux";
    import { bindActionCreators } from "redux";
    import { addData } from "../actions/index";
    import _ from "lodash";
    
    class List extends Component{
        componentDidMount(){
            this.props.addData()
        }
        render(){
            let item;
            if(this.props.data) {
              item = _.map(this.props.data, data => {
    
             return (
                 <li key={data.id}>
                 {data.title}
                 </li>
             /* this returns empty data. Only bullet button appears.
             In console, it says [Each child in an array or iterator should have a unique "key" prop.]
             Even though I added a key value. */
             )
         })
        }   
    
    
    return(
        <div>{item}</div>
    )
    }
    }
    
    function mapStateToProps(state){
        return {
        data : state.data
    }
    }
    
    export default connect(mapStateToProps, {addData})(Search);
    

    更新:

    要调试,请执行 console.log(this.props.data) ,产生了以下输出:

    Object { data: Array[100] }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   strider    7 年前

    基于您的 console.log(this.props.data) this.props.data 是:

    { data : [ /* fetched objects... */ ] }
    

    你要调用的数组 map on的级别比您预期的要深,因此实际上,您似乎没有正确地选择数据库中提取和存储的数据 mapStateToProps .

    试试这个:

    function mapStateToProps(state){
      return {
        data : state.data.data
      }
    }