redux 使用Stores React的复杂Map的一部分

7rfyedvj  于 2022-12-13  发布在  React
关注(0)|答案(1)|浏览(119)

将此值视为存储在Zustand/任何其他存储中。

productMap: {
   'product-id-abc': {
      info: {
         name: 'Gmail',
         url: 'gmail.com',
         api: 'localhost:8080'
      },
      endpoint: [{
         'url': '/getemail',
         'method': 'GET'
      }],
      users: [{
         firstName: 'Sam',
         email: 'sam@web.com'
      }]
   }
}

因此,如果需要访问存储中的任何值,这是一个棘手的问题。当我需要访问id为product-id-abc的产品的第一个用户时,考虑这种情况。目前我正在使用这种方法。但是,这在我的用例中失败了,因为当存储更新时,它不会反映在状态变量中。下面是我的代码。

const productMap = useBoundedStore(state => state.productMap);
  const [user, setUser] = useState();

  useEffect(()=>{
     if(productMap[props.productId])
        if(productMap[props.productId].users.length) {
           setUser(productMap[props.productId].users[0]);
        }
  },[[]]) // ---> (1)

更简单的方法是将productMap添加到标记为(1)的依赖项中,但是有没有更好的方法,比如将其存储为变量。如果有人能分享一些更好的模式,那就太好了。

0g0grzrc

0g0grzrc1#

如果我没理解错的话,从存储中检索用户最简单的方法是使用useSelector。

const users = useSelector(state = > state.productMap[props.productId].users)

相关问题