reactjs - 如何将 firebase 与 React 功能组件同步?

标签 reactjs firebase react-hooks rebase

我正在构建一个简单的 React 应用程序,使用功能组件(而不是类)。因此,在将数据库与状态数据(在本例中为 Hook )同步时,没有this用作上下文。

我应该在函数组件中使用的代码如下

useEffect(() => { base.syncState('/', { 上下文:这个, 状态:“消息” }) });

问题是,如您所见,this 在函数中没有任何意义。所以当然不行。它显示 REBASE:选项参数必须包含对象类型的上下文属性。相反,未定义

我想解决方案很简单,但由于我是 React 的新手,我想不出任何线索来解决这个问题。

提前感谢任何可以给我一些想法的人。

最佳答案

看起来你可以像下面这样模仿this:

useEffect(() => {
  const ref = base.syncState(endpoint, {
    context: {
      setState: (stateChange) => setState({ ...stateChange[stateName] }),
      state,
    },
    state: stateName
  })

  return () => {
    base.removeBinding(ref);
  }
}, [stateName])

但可能有一种更现代的方式来做到这一点:

useEffect(() => {
  let ref = firebase.db.ref(endpoint);
  ref.on('value', snapshot => {
    if (snapshot.val()) setState(snapshot.val());
  });
}, [stateName]);

详情在这里:https://github.com/tylermcginnis/re-base/issues/264

关于reactjs - 如何将 firebase 与 React 功能组件同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61348318/

相关文章:

ios - Firebase 查询是否可扩展

reactjs - 使用大数组 react useState() 钩子(Hook)

javascript - 导致钩子(Hook)对象更新重新渲染的最佳方法

reactjs - 无法调用 useParams 钩子(Hook)

javascript - 将 jQuery 与 React JS 结合使用

javascript - 验证 React-Bootstrap-Typeahead 输入

swift - 如何实现 firebase 事务

javascript - 使用 where 子句 firestore 搜索时获取文档 id

javascript - 使用 ES6 扩展运算符 react props 语法

javascript - 在expo React-Native项目中找不到模块 'metro/src/lib/TerminalReporter'