es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo editar y hacer un bucle en un objeto de Array en ReactJS.

En mi proyecto de React, estoy tratando de mostrar una tabla (usando react-data-table-component).

Aquí está mi código:

import React from "react";
import DataTable from "react-data-table-component";

class WrapperTableTile extends React.Component {
  render(){
    const {data} = this.props;
    const key = this.props.data[0];
    const keys = Object.keys({...key});

return (
  <div classname="card p-4 mb-4">
    <datatable title="" columns="{keys}" data="{data}" defaultsortfield="title" pagination="" selectablerows="" classname="table myDataTable" highlightonhover="{true}"></datatable>
  </div>
)


}
}

WrapperTableTile.defaultProps={
  data:{
    title:"",
    columns:[],
    rows:[]
  }
}

WrapperTableTile.propTypes={
  data:WrapperTableTileType
}

export default WrapperTableTile;

Mis datos son un array JSON con diferentes objetos, y uso Object.keys para obtener solo las claves del primer objeto, para usarlas como nombres de columnas en la tabla.

No funciona porque la salida de las claves es un objeto como:
{‘ID’,’NAME’,’AGE’,…} en lugar de un array que DataTable necesita para ser usado como columns = {keys}, como:

{
name: “ID”,
selector: “ID”,
sortable: true,
},
{
name: “NAME”,
selector: “NAME”,
sortable: true,
},
{
name: “AGE”,
selector: “AGE”,
sortable: true,
},

Entonces, al final, en React no sé cómo hacer algo como esto:

for (i = 0; i < keys.length; i++) {
{
name: keys[i],
selector: keys[i],
sortable: true,
}
}

¿Cómo puedo editar mi array para usarlo como valor en mi componente?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar el método map() para transformar el objeto keys en un arreglo de objetos que se pueden utilizar como la propiedad columns para el componente DataTable.

    const columns = Object.keys(key).map(key => {
      return {
        name: key,
        selector: key,
        sortable: true
      }
    });
    

    Luego, puede utilizar el arreglo columns como el valor para la propiedad columns en el componente DataTable.

    <datatable title="" columns="{columns}" data="{data}" defaultsortfield="title" pagination="" selectablerows="" classname="table myDataTable" highlightonhover="{true}"></datatable>
    

Comments are closed.