【问题标题】:data querying issue when using subscribe to get real-time updates in my app使用订阅在我的应用程序中获取实时更新时的数据查询问题
【发布时间】:2021-11-02 08:41:17
【问题描述】:

我正在编写一个以 aws amplify 作为后端的 react 本机移动应用程序,

为了在我的应用中获取实时更新,我在 useEffect 挂钩中使用了这样的订阅,

const[cartProducts, setcartProducts] = useState <CartProduct[]>([]);
const getCartProduct = async () => {
  await DataStore.query(CartProduct, c=>c.userID("eq", currentUserId))
                 .then(setcartProducts)
};
            
useEffect(() => {       
  const subscription = DataStore.observe(CartProduct, d=>d.userID("eq", UserId))
                                .subscribe(msg => getCartProduct(),);
  return subscription.unsubscribe;
}, []);

数据的查询发生在 getCartProduct() 函数中,

但问题是每当我关闭我的应用程序并重新打开此屏幕时,获取功能 (getCartProduct) 都不会运行 我猜是因为后端的数据(cartProducts)没有变化。

当我在后端更改 cartProducts 数据时,获取功能 (getCartProduct) 会再次运行

解决办法是什么?

【问题讨论】:

    标签: javascript amazon-web-services react-native react-hooks aws-amplify


    【解决方案1】:
    1. 订阅前在useEffect 块中调用getCartProduct
    2. getCartProduct() 回调用大括号括起来
    3. subscription.unsubscribe 括在大括号中并用() 调用它

    【讨论】:

      猜你喜欢
      • 2020-09-22
      • 2021-10-09
      • 2019-11-21
      • 2015-04-25
      • 2018-07-15
      • 2017-05-29
      • 2012-01-18
      • 2018-10-14
      • 1970-01-01
      相关资源
      最近更新 更多