起因
由于笔者在React和Angular项目之间交替coding,还时不时交叉着Vue,造成“框架混乱综合症🤪”。于是今天斗胆尝试了一下写一个新的Angular项目代码时,充分利用React函数式组件编程的思路,在Angular中实现的场景,梳理一下知识点,并记录遇到的问题。(老板思维:工作量还不饱和?)
- 组件交互(实现react一样的组件自定义后,子组件能够轻易获取到父组件中的值)
In React
function FatherComponent() {
...
return(
<ChildComponent value="react-value"/>
)
}
console.log(props.value);
}
In angular
value = "angular-value"
<app-child-page [getvalue]="value"/>
@Input() getvalue: string;
{{getvalue}}.
- 已知子组件或指令中的 @Input() 装饰器表示该属性可以从其父组件中获取值。那么问题来了,什么是装饰器?
装饰器是ES7新语法,后端也称之为“注解”,是设计模式中装饰者模式的一种实现。
装饰器实际上就是一种更加简洁的代码书写方式。
从代码表现来理解,就是使用闭包和高阶函数扩展或者修改了原来的表现;
从功能角度来理解,达到了不修改内部实现的前提下动态扩展和修改类定义的目的。
- 已知@Input() 装饰器可以从其父组件中获取值,那么问题又来了,能不能获取对象,函数方法等?(其实我也不知道,但是我觉得应该可以,不然也太鸡肋了…于是我就去试了试。)
testFun(){
console.log("test function");
}
objValue(){
name:"zhangsan",
age:18,
}
<app-child-page [getfun]="testFun" [getobj]="objValue"/>
@Input() getfun: any;
@Input() getobj: any;
this.getfun();
console.log(this.getobj);