如果功能组件具有内部可变状态,是否可以将其视为纯功能组件?
Can a functional component be considered as pure if it has an internal mutable state?
让我们考虑一个具有可变内部状态的功能组件:
const FComponent = (options: any) => {
let privateID = '0000';
return {
...{ // Public fields
name: 'component'
},
...{ // Public methods
setPrivateID: (id: string) => {
privateID = id;
}
}
}
};
FComponent({}).setPrivateID('0001');
我应该 return 一个具有请求 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 class 就是这样工作的,纯函数式的。
让我们考虑一个具有可变内部状态的功能组件:
const FComponent = (options: any) => {
let privateID = '0000';
return {
...{ // Public fields
name: 'component'
},
...{ // Public methods
setPrivateID: (id: string) => {
privateID = id;
}
}
}
};
FComponent({}).setPrivateID('0001');
我应该 return 一个具有请求 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 class 就是这样工作的,纯函数式的。