设置。使用状态订阅可观察对象

问题描述 投票:0回答:1

我有这个钩子

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>
}
javascript reactjs rxjs observable
1个回答
0
投票

useSubscription
需要
Observable
作为其第一个参数。在这里,您使用
useObservableState
它将可观察量“包装”为反应状态。

如果您无法修改

tableUpdated
来访问可观察的内容,那么您不能做得比
useEffect
更好。

© www.soinside.com 2019 - 2024. All rights reserved.