Я использую библиотеку. Эта библиотека создает компонент React, назовем его LibraryComponent.Переопределение метода реактивного компонента
Я хочу изменить функциональность одного из этих компонентов, в частности handleDrag().
Я создаю мой ExtendedLibrary модуля со следующим кодом:
var LibraryComponent = require('libraryComponent');
LibraryComponent.prototype.handleDrag = function() {
console.log("I'm the NEW handleDrag method.");
}
LibraryComponent.prototype.render = function() {
console.log("I'm the NEW render method.");
}
module.exports = LibraryComponent;
Как я понимаю изменение прототипа объекта создателя должен изменить все его экземпляры __proto__
atribute.
в мой установленный LibraryComponent, если я доступ:
this.__proto__.handleDrag() //I'm the NEW handleDrag method.
this.handleDrag() //I'm the OLD handleDrag method.
Почему?
В отличие:
this.prototype.render() //I'm the NEW render method.
this.render() //I'm the NEW render method. (Accessing the __proto__ method too).
Как я могу сделать, чтобы переопределить handleDrag определенно?
Я tryied с class ExtendedLibrary extends LibraryComponent {...}
тоже и проблема та же (но я предпочитаю не включать ES6 вообще в моем проекте.)
Как 'LibraryComponent' определено? Это может быть копирование метода в экземпляры (например, автообщение, выполняемое 'React.createClass()'). – JMM
Если ваш открытый для использования синтаксис ES6, вы можете просто расширить LibraryComponent классом. Это должно сработать. –