Tengo un problema para llamar a una función en otras dos funciones. Dos funciones, donde llamaré función es lo mismo. Estoy usando mapeo. Las tres funciones las agregué en el constructor, pero no tengo idea de por qué sucedió esto.
Aquí está mi código:
class medicalDataForAll extends React.Component{ constructor(props) { super(props) this.getLastWeekHeartRate = this.getLastWeekHeartRate.bind(this) this.getLastWeekHeartRateX = this.getLastWeekHeartRateX.bind(this) this.getLastWeekHeartRateY = this.getLastWeekHeartRateY.bind(this) } getLastWeekHeartRate() { var daysValues = []; this.getLastWeekHeartRateDatesXY().forEach((a) => { if (!this[a[0].day]) { this[a[0].day] = { day: a[0].day, value: 0}; daysValues.push(this[a[0].day]); } this[a[0].day].value += a[0].value; this[a[0].day].month = a[0].month; }, Object.create(null)); var days = this.getLastWeekHeartRateDatesXY().map((a) => a[0].day) var daysCounts = [...new Set(days)].map(e =>({ day: e, count: days.filter(n => n===e).length })) var newArray = daysValues.map(function(value, index) { return { xAxe: "" + daysValues[index].day + '/' + daysValues[index].month + "", yAxe: parseInt(daysValues[index].value / daysCounts[index].count) } }); //console.log(newArray.reverse()) return newArray.reverse() } getLastWeekHeartRateX() { const value = this.getLastWeekHeartRate().map((a) => a.xAxe) console.log(value) return value } getLastWeekHeartRateY() { const value = this.getLastWeekHeartRate().map((a) => a.xAxe) console.log(value) return value }El problema muestra getLastWeekHeartRateY(), la salida de la función está vacía. ¡Gracias!
Después de buscar el problema, puedo cargar todas las funciones en render().
El problema era el tiempo. Tenía muchas funciones y no era suficiente ejecutar la función en render(). Acabo de crear en estado chartData [] y después de este estado actualizado y usado en ambas funciones.
Código a continuación:
class medicalDataForAll extends React.Component{ constructor(props) { super(props) this.state = { chartData = {} } } componentDidMount(){ this.setState({ chartData: this.getLastWeekHeartRate() }) } getLastWeekHeartRate() {...} getLastWeekHeartRateX() { let value = this.state.chartData.map((a) => a.xAxe) return value } getLastWeekHeartRateY() { let value = this.state.chartData.map((a) => a.xAxe) return value }¡Que tengas una buena codificación!