Правильный синтаксис для применения метода в render () с помощью функции стрелки - PullRequest
0 голосов
/ 02 марта 2019

Я нашел этот отличный метод в Stackoverflow для преобразования длительности из ss в hh.mm.ss, и я попытался вызвать его в разделе render () страницы.Много попыток, но пока не удачных.Я думаю, что я что-то упустил в синтаксисе функции стрелки, но не могу узнать, что.

Это метод, который я немного отредактировал для своей цели:

formatTime(duration) {
    d = Number(duration);
    var h = Math.floor(d / 3600);
    var m = Math.floor(d % 3600 / 60);
    var s = Math.floor(d % 3600 % 60);

    var hDisplay = h > 0 ? h + (h == 1 ? " hour, " : " hours, ") : "";
    var mDisplay = m > 0 ? m + (m == 1 ? " minute, " : " minutes, ") : "";
    var sDisplay = s > 0 ? s + (s == 1 ? " second" : " seconds") : "";
    return hDisplay + mDisplay + sDisplay;
    }

И это мой render() раздел, где я хотел бы назвать formatTime(), передавая song.duration какаргумент метода ( полный код здесь ):

render() {
     return (

//[...] 

     <td {() => this.formatTime(song.duration)}> 
     {formatTime(song.duration)} </td>

//[...] 

}

1 Ответ

0 голосов
/ 02 марта 2019

Напишите так:

<td> {this.formatTime(song.duration)} </td>

По следующим причинам:

1 - Это метод класса, поэтому вам нужно использовать this.functionName() для доступа к функции.

2- Вы обычно вызываете функцию, и она возвращает некоторое содержимое / значение, которое вы хотите отобразить, поэтому функция стрелки не требуется.


Проверьте этот ответ для получения более подробной информации о когда необходима функция javascript bind или arrow

...