Как вызвать функцию, определенную внутри компонента реакции, в классе машинописного текста?

 export class abc extends React.Component<IProps, IState> {
    function(name: string) {
    console.info("I wish to call this function"+ name);
    }

render() {
    return (
      <div>Hello</div>
    );
  }
}

Теперь я хочу вызвать метод функции указанного выше компонента в другой класс xyz.ts (который не является реагирующим компонентом). Возможно ли сделать то же самое?

Один из способов — передать вашу функцию дочернему компоненту в качестве реквизита.

KiraLT 10.12.2020 16:44

эта функция не имеет названия. Как бы вы назвали это? Кроме того, вызов этого из функции, определенной в другом некомпонентном классе, звучит для меня странно. Не могли бы вы уточнить, что вы хотите сделать?

emi 10.12.2020 17:05

Если функция это позволяет (и, если вам нужно использовать его в другом компоненте, это очень вероятно), вы можете вынести его за пределы компонента класса и экспортировать отдельно: export function foo() { ... }; export class MyClass extends React.Component { ... };.

secan 10.12.2020 17:06

Функция имеет имя, и я хочу вызвать эту функцию, чтобы обновить значение класса компонента из класса, не являющегося компонентом.

Orion 10.12.2020 17:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
1 705
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать шаблон слушателя следующим образом:

export interface IListener {
    notify: (name:string) => void;
}


export class Listener {
    listener : IListener[] = [];


    addListener(listener: IListener) {
      this.listener.add(listener)
    }

    notifyListener() {
      this.listener.forEach((listener) => {
          listener.notify("abc");
      });
    }
  }

  export class abc extends React.Component<IProps, IState> implements IListener {

    componentDidMount() {
        // register this class as a listener
        new Listener().addListener(this);
    }

    public notify(name:string) {
        this.test(name);
    }

    test(name: string) {
      console.info("I wish to call this function"+ name);
    }
    render() {
      return (
      <div>Hello</div>);
    }
    
  }

Вам определенно следует переместить функцию из компонента и экспортировать ее, если вы хотите использовать ее в другом файле ts.

Другие вопросы по теме