Создайте функцию в интерфейсе для форматирования даты, чтобы ее можно было отображать при рендеринге

Я получаю ошибки при попытке отформатировать дату в читаемый формат с помощью .toLocaleDateString():

private _onRenderCell = (item: IEIAItem) => {
  
  let create1 = item.Created;
  let create2 = create1.toLocaleDateString(); //this causes the error
      return (
        <div>
          <tr>
            <td style={{ width: '80px' }}>{item.EIARef}</td>
            <td style={{ width: '250px' }}>{item.PPName}</td>
            <td style={{ width: '80px' }}>{create2}</td>//this causes the error
            <td style={{ width: '100px' }}>{item.PolicyOwnerTitle}</td>
            <td style={{ width: '200px' }}>{item.Department}</td>
            <td style={{ width: '100px' }}>{item.FormStatus}</td>
            <td style={{ width: '15px' }}>
            <div className={styles.editIcon}><Icon iconName="Edit" id={item.Id.toString()} onClick={this._editItem} />
            </div>
           </td>
          </tr>
     
        </div>
      );
    }

Приведенный выше код отображает список элементов из списка SPO. Он использует интерфейс для переноса данных в список.

Интерфейс / модель данных работает правильно, но если я заменяю item.Created чем-нибудь, кроме item.Created, возникает ошибка (toLocaleDateString is not a function...). Я искал решения вдоль и поперек, но ничего из того, что я нашел, действительно не покрывает это. Я думаю, нужно либо использовать .map в методе _onRenderCell, либо использовать .toLocaleDateString() в самом интерфейсе. Нужна помощь с этим, пожалуйста.


person NightTom    schedule 17.12.2020    source источник
comment
пусть create1 = new Date (item.Created), и вы должны убедиться, что item.Created находится в правильной форме.   -  person Robert    schedule 17.12.2020
comment
Я получаю ошибки. выдает ошибку. Всегда лучше цитировать конкретную ошибку, которую вы получаете.   -  person Wyck    schedule 17.12.2020
comment
Добавил ошибку, спасибо.   -  person NightTom    schedule 17.12.2020
comment
@Robert - слишком много думал об этом, немного смутился Спасибо.   -  person NightTom    schedule 17.12.2020
comment
Вероятно, просто твоя дата все еще остается строкой. Вероятно, пришло из JSON, где Date изначально не поддерживается, а даты форматируются как строки.   -  person Wyck    schedule 17.12.2020


Ответы (1)


Это сработало:

private _onRenderCell = (item: IEIAItem) => {
         const Role = this.state.CurrentUserRole;
             let create1 = new Date(item.Created);
             let create2 = create1.toLocaleDateString();
         return (
           <div>
             <tr>
               <td style={{ width: '80px' }}>{item.EIARef}</td>
               <td style={{ width: '250px' }}>{item.PPName}</td>
               <td style={{ width: '80px' }}>{create2}</td>
               <td style={{ width: '100px' }}>{item.PolicyOwnerTitle}</td>
               <td style={{ width: '200px' }}>{item.Department}</td>
               <td style={{ width: '100px' }}>{item.FormStatus}</td>
               <td style={{ width: '15px' }}>
                 <div className={styles.editIcon}><Icon iconName="Edit" id={item.Id.toString()} onClick={this._editItem} />
                 </div>
               </td>
             </tr>
     
           </div>
         );
       }

person NightTom    schedule 17.12.2020