让我们考虑一个具有可变内部状态的功能组件:

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类的工作方式,它纯粹是功能性的。

10-02 13:35