如果功能组件具有内部可变状态,是否可以将其视为纯功能组件?

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 就是这样工作的,纯函数式的。