Я пытаюсь передать функции как свойства в компоненты Polymer.Мне удалось заставить его работать, когда это делалось из другого компонента Polymer с помощью односторонней привязки данных, но когда я загружал свой компонент Polymer в проект React и пытался передать функцию для свойства, через которое он проходит, в виде строки.
Упрощенная версия компонента Polymer:
export class PolymerButton extends PolymerElement {
static get template() {
return html`
<div>
[[text]]
</div>
`;
}
static get properties() {
return {
text: { type: String },
clickHandler: {
type: Function,
value: null
},
disabled: { type: Boolean }
};
}
ready() {
super.ready();
this.addEventListener('click', (e) => this.onButtonClick(e));
}
onButtonClick(e) {
if (!this.disabled) {
this.clickHandler(e);
}
}
}
customElements.define('ppp-button', PolymerButton);
Как мне удалось использовать его в другом компоненте Polymer:
<ppp-button text="Click me" click-handler="[[_clickCallback]]"></ppp-button>
Как я пытаюсь использовать его в React:
render() {
return (
<div className="export-btn">
<ppp-button text="Export" click-handler={this.exportReport} />
</div>
);
}
Когда я нажимаю кнопку, значением свойства clickHandler будет строка "{this.exportReport}"
.
Компонент Polymer загружается нормально, именно эта часть обработчика щелчков работает.Я пробовал различные синтаксис без удачи.Я использую Polymer 3 и React 15 и загружаю библиотеку react-polymer
в свой компонент React.