- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想知道哪种方式最可靠地定义属性,应该在模板中生成输出。
模板引用:
<h1>{{msg}}</h1>
属性定义:
<script lang="ts">
import { Component, Vue } from "vue-property-decorator";
@Component
export default class Test extends Vue {
protected msg: string;
public constructor() {
super();
this.msg = 'Today\'s date ' + moment().format('YYYY/MM/DD');
}
}
</script>
在浏览器中输出:
<h1>Today's date 2019/03/07</h1>
模板引用:
<h1>{{msg}}</h1>
属性定义:
export default class Test extends Vue {
protected msg: string = '';
mounted() {
this.msg = 'Today\'s date ' + moment().format('YYYY/MM/DD');
}
}
在浏览器中输出:
<h1>Today's date 2019/03/07</h1>
模板引用:
<h1>{{msgText}}</h1>
属性定义:
export default class Test extends Vue {
protected msg: string = '';
public constructor() {
super();
this.msgText = 'Today\'s date ' + moment().format('YYYY/MM/DD');
}
get msgText(): string {
return this.msg;
}
set msgText(msg:string) {
this.msg = msg;
}
}
在浏览器中输出:
<h1>Today's date 2019/03/07</h1>
最佳答案
使用 mounted
的第二种方法优于其他方法。我建议的唯一更改是使用 created
Hook 而不是 mounted
:
export default class Test extends Vue {
protected msg: string = '';
created() {
this.msg = 'Today\'s date ' + moment().format('YYYY/MM/DD');
}
}
一般对于简单的属性,可以在声明的时候直接赋值。当您的作业不简单时使用 created。
此外,我们在编写基于类的组件时并没有真正使用构造函数。背后的原因是 Vue.js 组件本质上是基于对象的。 @Component
装饰器最终使组件表现得像基于对象的。
此外,如果您查看 Vue.js 组件生命周期方法,就会发现没有构造函数的位置。初始方法是beforeCreate
-> data
-> created
-> mounted
等等。 beforeCreate 如何在没有实际调用 constructor 的情况下执行?这个 make 真的很奇怪。
注意 1:对于 Vue.js 版本 3,官方基于类的组件是建议的。因此,这可能会在不久的将来发生变化。
注意 2:TypeScript 会在编译和 Vue. js 似乎与它配合得很好。但它仍然是未指定的,最好避免。
关于typescript - 基于类的vue组件属性定义: constructor vs. getter/setter vs. mounted生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55050333/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!