Javascript 实现js类属性的钩子

Javascript 实现js类属性的钩子,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,由于社区如何将“类”视为“React类组件”的可互换性,标题可能会令人困惑 但不是,我说的是纯JavaScript类,其中一个钩子编写在一个类中,用于检查其属性是否更改,并且可以在react钩子组件中使用 我有这门课 class DatabaseRecords { private _ loading: boolean private _records: string[][] } 我可以为这个类编写一个钩子,这样它就可以被react钩子使用吗 比如,每次\u加载更新时,也会更新钩

由于社区如何将“类”视为“React类组件”的可互换性,标题可能会令人困惑

但不是,我说的是纯JavaScript类,其中一个钩子编写在一个类中,用于检查其属性是否更改,并且可以在react钩子组件中使用

我有这门课

class DatabaseRecords {
    private _ loading: boolean
    private _records: string[][]
}
我可以为这个类编写一个钩子,这样它就可以被react钩子使用吗

比如,每次
\u加载
更新时,也会更新钩子

例如

类数据库记录{
私有加载:布尔值
私有记录:字符串[][]
useIsLoading(){
//我想成为一个钩子:<
把这个还给我
}
}
常量渲染记录=(道具)=>{
const isload=DatabaseRecords.useIsLoading()
如果(isLoading)返回正在加载

// [...] }
我真的不确定react hooks是否应该在这个基础上工作,我是否愚蠢,是否遗漏了一些明显的东西。
或者,如果有更好的方法来解决这个问题的话。

缺少的部分是状态的概念和对变化的意识,这是唯一的反应,而不是出现在vanilla JS中。我看到了您在这里试图做的事情,即响应
isLoading
属性中的更改,但它现在的编写方式不会发生这种情况。我不知道这在技术上是否可行,但即使可行,只要将
DatabaseRecords
类重写为
useDatabaseRecords
钩子(内部使用
setState
)就会简单得多。这很有意义,可以想象得到。问题是,有时您只需要类以面向对象的方式对事物进行建模,因为它有时是构建代码库的一种更干净的方式,比如
database.Add(record)
,因此如果钩子可以与该用例一起工作,这将是一种额外的安慰。但是,是的,我不这么认为:PYou可以编写一个钩子,钩子通过方法
add(record)
返回一个对象
database
。事实上,我认为我们可以让钩子返回一个类?我可能必须处理的部分。您还可以有一个钩子,在内部存储类的实例。如果我们让某些类方法返回回调,甚至返回承诺,我们可以使用它来保持状态同步。比如
classInstance.fetchRecords.then(setisload(false))
。你有一个更完整的例子类,我可以玩吗?当然,我刚刚做了一个,所以我可以测试它。似乎是一个有趣的测试用例
class DatabaseRecords {
    private _ loading: boolean
    private _records: string[][]

    useIsLoading() {
        // I wanna be a hook :<
        return this._loading
    }
}

const RenderRecords = (props) => {
    const isLoading = DatabaseRecords.useIsLoading()
    if (isLoading) return <p>Loading...</p>

    // [...]
}