Aurelia 中第三方库的依赖注入 (di) 范例
The dependency injection (di) paradigm with 3rd party libraries in Aurelia
我正在尝试使用 React 创建 Aurelia 自定义元素,方法是在 Aurelia Q & A 上遵循此示例并发生以下异常:
Potentially unhandled rejection [1] TypeError: Cannot read property 'render' of undefined
我做错了什么?这是我的测试代码:
test.html
<import from="./myelement"></import>
<my-element foo.bind="Value"></my-element>
myelement.html
<template>
<input type="text" placeholder="user">
</template>
myelement.js
import {Behavior} from 'aurelia-framework';
import {React} from 'aurelia-framework';
export class MyElement {
static metadata(){
return Behavior
.customElement('my-element')
.withProperty('foo')
.noView();
}
static inject() {
return [Element];
}
constructor(element) {
this.element = element;
console.log('this:', this);
console.log('element:', element);
}
bind() {
// React.render(<MyReactElement foo={this.foo} />, this.element);
React.render(React.createElement(MyReactElement, { foo: this.foo }), this.element);
}
fooChanged() {
this.bind();
}
}
导入第三方库的诀窍是您必须选择您希望如何访问该库。在您的情况下,如果您尝试使用结合了视图和视图模型的 React 创建单个自定义元素,您可以像这样简单地这样做 -
jspm install react
然后在你的视图模型中 -
import react from 'react'
然后你可以在你的视图模型中的任何地方使用它,比如 -
attached(element){
// React pseudo-code
react.render(element);
}
如果您选择通过依赖项注入加载库,以便它可以作为模块在任何地方使用,您有更多选择,但我认为这应该给您一个开始。
我正在尝试使用 React 创建 Aurelia 自定义元素,方法是在 Aurelia Q & A 上遵循此示例并发生以下异常:
Potentially unhandled rejection [1] TypeError: Cannot read property 'render' of undefined
我做错了什么?这是我的测试代码:
test.html
<import from="./myelement"></import>
<my-element foo.bind="Value"></my-element>
myelement.html
<template>
<input type="text" placeholder="user">
</template>
myelement.js
import {Behavior} from 'aurelia-framework';
import {React} from 'aurelia-framework';
export class MyElement {
static metadata(){
return Behavior
.customElement('my-element')
.withProperty('foo')
.noView();
}
static inject() {
return [Element];
}
constructor(element) {
this.element = element;
console.log('this:', this);
console.log('element:', element);
}
bind() {
// React.render(<MyReactElement foo={this.foo} />, this.element);
React.render(React.createElement(MyReactElement, { foo: this.foo }), this.element);
}
fooChanged() {
this.bind();
}
}
导入第三方库的诀窍是您必须选择您希望如何访问该库。在您的情况下,如果您尝试使用结合了视图和视图模型的 React 创建单个自定义元素,您可以像这样简单地这样做 -
jspm install react
然后在你的视图模型中 -
import react from 'react'
然后你可以在你的视图模型中的任何地方使用它,比如 -
attached(element){
// React pseudo-code
react.render(element);
}
如果您选择通过依赖项注入加载库,以便它可以作为模块在任何地方使用,您有更多选择,但我认为这应该给您一个开始。