У меня есть библиотека компонентов React (назовем ее MyLibrary), которая поставляется с babel, экспортируется в виде пакета NPM и становится доступной для другого репо (MyProject). В MyLibrary у меня есть компонент TextField, который делает доступной следующую функцию:
export default class TextField extends Component {
...
getValue() {
return this.state.value;
}
}
Функция getValue
правильно связана с this
в определенном классе, и эта функция доступна, когда я вызываю ее из других компонентов внутри MyLibrary.
Однако, когда я вместо этого работаю в MyProject, и я запустил npm install MyLibrary
и импортировал TextField следующим образом:
import { TextField } from 'MyLibrary';
...
render() {
this.field = <TextField id="testField" />;
return field;
}
В другом месте кода, когда я пытаюсь получить доступ к экспортированной функции, вот так:
console.log('Retrieving the value of the text field:', this.field.getValue());
Я получаю следующее сообщение об ошибке:
Uncaught TypeError: field.getValue is not a function
Отображая свойства переменной field
в журнале консоли, я вижу следующее:
$$typeof: Symbol(react.element)
key: null
props: {id: "testField", labelText: "", invalidMessage: "", placeholder: "", spellCheck: false, …}
ref: null
type: ƒ TextField(props)
_owner: FiberNode {tag: 2, key: null, type: ƒ, stateNode: AddEditForm, return: FiberNode, …}
_store: {validated: false}
_self: null
_source: null
__proto__: Object
Кажется, что getValue
вообще не доступен как функция, даже если он экспортируется как часть класса TextField. Похоже, что моя переменная field
распознается в коде как тип Symbol, а не как тип TextField. Есть ли способ получить экземпляр TextField напрямую? Или я каким-то образом могу избежать этого разрыва?