#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. Ого, большое тебе спасибо. Потребовалось некоторое время, чтобы зажегся свет, но он медленно возвращается ко мне.