让我们考虑一个具有可变内部状态的功能组件:
const FComponent = (options: any) => {
let privateID = '0000';
return {
...{ // Public fields
name: 'component'
},
...{ // Public methods
setPrivateID: (id: string) => {
privateID = id;
}
}
}
};
FComponent({}).setPrivateID('0001');
我应该返回一个具有所请求ID的新组件吗?
像这样吗?我想一个函子?
https://medium.com/javascript-scene/functors-categories-61e031bac53f
const FComponent = (options: {id: string}) => {
return {
...{
name: 'component'
},
...{
privateID: (id: string) => {
return FComponent({id})
}
}
}
};
最佳答案
改变状态的功能并不纯正,因为改变状态是一种副作用。
第二个版本不改变状态,而是创建一个新对象。这就是Java中的String类的工作方式,它纯粹是功能性的。