Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
Cómo convertir métodos en componentes de clase de reacción a funciones

Estoy usando reaccionar para construir un gráfico de radar. Encontré estafuente editable. Pero está en los componentes de la clase de reacción. Necesito convertirlo en componentes funcionales.

Componente de clase original:ingrese la descripción del enlace aquí

Intenté convertir el componente de la clase en un componente funcional, pero no pude encontrar la manera de convertir los siguientes dos métodos en la clase.

 constructor(props) { super(props); this.state = { data: this.processData(characterData), maxima: this.getMaxima(characterData) }; } getMaxima(data) { const groupedData = Object.keys(data[0]).reduce((memo, key) => { memo[key] = data.map((d) => d[key]); return memo; }, {}); return Object.keys(groupedData).reduce((memo, key) => { memo[key] = Math.max(...groupedData[key]); return memo; }, {}); } processData(data) { const maxByGroup = this.getMaxima(data); const makeDataArray = (d) => { return Object.keys(d).map((key) => { return { x: key, y: d[key] / maxByGroup[key] }; }); }; return data.map((datum) => makeDataArray(datum)); }

Esto es lo que he probado hasta ahora:

 const [data, setData] = useState(characterData); const [maxima, setMaxima] = useState(characterData); setMaxima = (data: any[]) => { const groupedData = Object.keys(data[0]).reduce((memo, key) => { memo[key] = data.map(d => d[key]); return memo; }, {}); return Object.keys(groupedData).reduce((memo, key) => { memo[key] = Math.max(...groupedData[key]); return memo; }, {}); }; setData = (data: any[]) => { const maxByGroup = setMaxima(data); const makeDataArray = (d: { [x: string]: number }) => Object.keys(d).map(key => ({ x: key, y: d[key] / maxByGroup[key] })); return data.map(datum => makeDataArray(datum)); };

¿Puede alguien ayudarme a convertir estos dos métodos en funciones? El problema aquí es que estos son los métodos establecidos de las funciones useState.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Tienes que mencionar las funciones en const en componentes funcionales. Prueba como a continuación,

 const [data, setData] = useState(characterData); const [maxima, setMaxima] = useState(characterData); const setMaxima1 = (data: any[]) => { const groupedData = Object.keys(data[0]).reduce((memo, key) => { memo[key] = data.map(d => d[key]); return memo; }, {}); setMaxima(value) return Object.keys(groupedData).reduce((memo, key) => { memo[key] = Math.max(...groupedData[key]); return memo; }, {}); }; const setData1 = (data: any[]) => { const maxByGroup = setMaxima(data); const makeDataArray = (d: { [x: string]: number }) => Object.keys(d).map(key => ({ x: key, y: d[key] / maxByGroup[key] })); setData(Value) return data.map(datum => makeDataArray(datum)); };
about 4 years ago · Juan Pablo Isaza Report

0

Lo más obvio es escribirlas como funciones regulares y eliminar todo this en el código porque ya son funciones bastante puras:

 function MyComponent (props) { [data, setData] = useState(processData(characterData)); [maxima, setMaxima] = useState(getMaxima(characterData)); function getMaxima (data) { const groupedData = Object.keys(data[0]).reduce((memo, key) => { memo[key] = data.map((d) => d[key]); return memo; }, {}); return Object.keys(groupedData).reduce((memo, key) => { memo[key] = Math.max(...groupedData[key]); return memo; }, {}); } function processData (data) { const maxByGroup = getMaxima(data); const makeDataArray = (d) => { return Object.keys(d).map((key) => { return { x: key, y: d[key] / maxByGroup[key] }; }); }; return data.map((datum) => makeDataArray(datum)); } }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!