Я переучиваю (!) TypeScript и в меньшей степени реагирую после первоначального изучения вещей простым способом.
Меня смущает необходимость отдельного файла реквизита и состояния или, в частности, какони используются с родительскими и дочерними компонентами, а также с тем, как они используются родительским или дочерним компонентами. Я думаю, что моей главной проблемой является понимание TypeScript и того, как реквизиты и состояние используются с ним.
Я создаю приложение, которое выглядит следующим образом:
import * as React from 'react';
import styles from './Dibf.module.scss';
import { HashRouter as Router, Route } from 'react-router-dom';
import { Page1 } from './Page1/Page1';
import { Page2 } from './Page2/Page2';
import { Header } from './Header/Header';
import { Footer } from './Footer/Footer';
import { Product } from './Product/Product';
import { IDibfProps } from './IDibfProps';
import { escape } from '@microsoft/sp-lodash-subset';
export default class Dibf extends React.Component<IDibfProps, {}> {
constructor(props) {
super(props);
this.state = {
CurrentUserTitle: null,
CurrentUser: null,
CurrentUserGroups: null,
CurrentUserID: null,
CurrentUserEmail: null,
FullName: null,
UniId: null,
FilteredItems: [],
Author: null,
CurrentUserRole: null,
Items: [],
DepartmentsList: [],
SelectedDept: undefined,
Id: null,
JobRef: null,
Title: null,
JobTitle: null,
DateOfBreach: null,
DateOfDiscovery: null,
IncidentDetails: null,
PersonalData: null,
FormStatus: null,
PhoneNo: null,
Department: null,
SubDepartment: null,
LoggedInUser: null,
LoggedInUserPPDefaultItems: [],
};
}
public render(): React.ReactElement<IDibfProps> {
return (
<Router>
<div>
<h2>App</h2>
<Header HOW WOULD I GET THIS CHILD FUNCTION TO UPDATE THE STATE OF ITS THIS PARENT?/>
{/* The different screens will be re-rendered here */}
<Route path="/screen1" component={Page1} />
<Route path="/screen2" component={Page2} />
<Route path="/products/:id" component={Product} />
<Footer />
</div>
</Router>
);
}
}
Так что вы можете увидеть различныедочерние компоненты. , и т.д ...
У меня будут поля пользовательского интерфейса и элементы управления для каждого из этих дочерних компонентов. Что проще всего сделать:
Иметь состояние для ВСЕХ элементов управления в Parent, как я описал выше, а затем использовать файл props и интерфейсный файл состояния, чтобы каким-то образом передать то, что изменилось вконтролирует до состояния (поднятие состояния с помощью функции-обработчика?)
Или для каждого дочернего компонента установлено состояние и передаются реквизиты между братьями и сестрами? Как будет работать отдельный файл интерфейса props / state в этом случае?
Я понимаю, как передать props / состояние с помощью React, но я не понимаю, как TypeScript делает это с помощью интерфейсов. Я предполагаю, что это как-то связано с объявлением класса и рендера, но я не уверен.
Мне нужна помощь этого сообщества здесь, так как сейчас я немного разбираюсь в этом. Представьте себе, что вы изучаете что-то в течение нескольких месяцев, а потом узнаете, что вы НИЧЕГО не знаете!
Может кто-нибудь дать мне простое объяснение с примерами кода вместо ссылок.
Спасибо
ОБНОВЛЕНИЕ: Я обновил код - пожалуйста, посмотрите на функцию Header с запросом. Пожалуйста, предоставьте пример кода (ов).
T