Ошибка веб-части Sharepoint / приложения react: свойство «показывать» не существует для типа » Только для чтения»

#reactjs #typescript #sharepoint #web-parts

Вопрос:

Прошло много времени с тех пор, как я что-либо делал с React, не говоря уже о том, что я мало что делал в sharepoint. Я использовал генератор yeoman для создания простого приложения react, и теперь у меня возникли проблемы с подключением штата.

Следующий код создает эту ошибку: Свойство «показать» не существует для типа » Только для чтенияlt;{}gt;’.lt;{}gt;

Есть несколько других сообщений о причинах этого, но я не смог успешно исправить это в своем приложении. Создается впечатление, что генератор создает файл реквизита и ссылается на него. Я видел один пост, в котором говорилось, что мне нужно создать (и ссылаться) на аналогичный файл для состояния? Я пытался, но все еще не мог заставить его работать. Любая помощь будет ОЧЕНЬ признательна.

 import * as React from 'react'; import styles from './SpetSelfServiceQuestionnaire.module.scss'; import { ISpetSelfServiceQuestionnaireProps } from './ISpetSelfServiceQuestionnaireProps'; import { escape } from '@microsoft/sp-lodash-subset';    export default class SpetSelfServiceQuestionnaire extends React.Componentlt;ISpetSelfServiceQuestionnaireProps, {}gt; {   constructor( props ) {  super( props );  this.state = { show: true }  this.toggleDiv = this.toggleDiv.bind(this)  }   toggleDiv = () =gt; {  const { show } = this.state;  this.setState( { show: !show })  }  

Ответ №1:

 React.Componentlt;ISpetSelfServiceQuestionnaireProps, {}gt;  

Вторым параметром универсального является тип состояния. Вы сказали, что состояние будет пустым объектом, поэтому, когда вы пытаетесь сделать что-то еще, typescript указывает на несоответствие.

Похоже, вы хотите, чтобы штат был таким:

 interface ISpetSelfServiceQuestionnaireState {  show: boolean; }  export default class SpetSelfServiceQuestionnaire extends React.Componentlt;  ISpetSelfServiceQuestionnaireProps,  ISpetSelfServiceQuestionnaireState gt; {  //... }  

Это не обязательно должно быть в другом файле, если вы этого не хотите.

Комментарии:

1. Ого, большое тебе спасибо. Потребовалось некоторое время, чтобы зажегся свет, но он медленно возвращается ко мне.