我有这个钩子
import { useObservable, useObservableState } from 'observable-hooks'
const tableUpdated = (table) => {
const database = useDatabase();
const data = useObservableState(
useObservable(
() => database.get(table).query().observe(),
[],
),
)
return data;
};
export default tableUpdated;
我使用以下内容
const Foo = () => {
const posts = tableUpdated('posts')
return <p>{posts.text}</p>
}
现在,我真正需要的是类似于
useEffect
且依赖于表 'posts'
的东西。每当表更新时,我都需要 useEffect
来运行并执行一些操作,并最终设置本地状态。
根据文档,您应该使用
useSubscription
。但我不知道如何让以下内容(此处:useEffect
错误)与useSubscription
一起运行
const Foo = () => {
const [foo, setFoo] = useState(null)
const posts = tableUpdated('posts')
useEffect(() => {
if(posts) {
const result = ... // do sth
setFoo(result)
}, [posts])
return <p>{foo}</p>
}
useSubscription
需要 Observable
作为其第一个参数。在这里,您使用 useObservableState
它将可观察量“包装”为反应状态。
如果您无法修改
tableUpdated
来访问可观察的内容,那么您不能做得比 useEffect
更好。