Ионная реакция, доступ к методу App.tsx из компонента, определенного через компонент Route

#reactjs #ionic-framework #react-router-dom #react-functional-component #high-order-component

#reactjs #ionic-framework #реагирует-маршрутизатор-dom #реагирующий функциональный компонент #компонент высокого порядка

Вопрос:

Я хочу спросить, как получить доступ к методу «TestMethod», который определен в App.tsx, из Home.tsx

Это App.tsx (у этого компонента есть метод с именем «TestMethod»)

 import React from 'react';
import { IonApp, IonRouterOutlet } from '@ionic/react';
import { IonReactRouter } from '@ionic/react-router';
import { Route } from 'react-router-dom';
import Home from './pages/Home';

const App: React.FC = () => {
  const testMethod = () => {
    console.log('test');
  };
  return (
    <IonApp>
      <IonReactRouter>
        <IonRouterOutlet>
          <Route path="/home" component={Home} exact />
        </IonRouterOutlet>
      </IonReactRouter>
    </IonApp>
  );
};

export default App;
  

Это Home.tsx

 import { IonContent, IonPage, IonSplitPane, IonButton } from '@ionic/react';
import React from 'react';
import { RouteComponentProps } from 'react-router-dom';

interface ChildComponentProps extends RouteComponentProps<any> {}

const Home: React.FC<ChildComponentProps> = (props) => {
  const onSubmit = () => {
    // I want to access testMethod from App.tsx in here
  };
  return (
    <IonContent>
      <IonSplitPane contentId="main">
        <IonPage id="main">
          <IonButton
            expand="block"
            type="submit"
            class="ion-no-margin"
            onClick={onSubmit}
          >
            Test
          </IonButton>
        </IonPage>
      </IonSplitPane>
    </IonContent>
  );
};

export default Home;
  

Из Home.tsx я хочу выполнить метод «TestMethod», который определен в App.tsx, когда пользователь нажимает кнопку в Home.tsx

Я все еще не могу понять, как этого добиться, ваша помощь очень ценится.

Спасибо.

Ответ №1:

 <Route path="/home" exact>
   <Home test={testMethod} />
</Route>
  

В Home компоненте

   const onSubmit = () => {
    // I want to access testMethod from App.tsx in here
    props.test()
  };