前言/说明
我正在尝试将React的新挂钩函数用于我正在构建的电子商务网站,但是在解决购物车组件中的错误时遇到了问题。
我认为以我想通过使用多个Context组件保持全局状态模块化的事实作为开始讨论的重点。对于我提供的商品类型,我有一个单独的上下文组件,对于一个人的购物车中的商品,我有一个单独的上下文组件。
问题
我遇到的问题是,当我调度将组件添加到购物车的操作时,减速器将运行两次,就像我两次将商品添加到购物车一样。但是仅当它最初被渲染时,或者由于诸如显示之类的奇怪原因而被设置为hidden,然后又返回到block或由于z-index和可能的其他类似更改而改变。
我知道这有点冗长,但这是一个很挑剔的问题,因此我创建了两个演示该问题的代码笔:
您将看到我包含一个用于切换display组件的按钮。这将有助于展示CSS与问题的相关性。
最后,请用代码笔监视控制台,这将显示所有按钮的单击以及每个reducer的哪一部分已运行。在完整示例中,问题最明显,但在最小示例中,控制台语句显示了该问题。
问题区域
我已查明该问题与以下事实有关:我正在使用useContext挂钩的状态来获取项目列表。调用了一个函数来为我的useReducer钩子生成化简器,但是仅当使用了另一个钩子时才出现,我可以使用像钩子一样不会重新评估的函数,并且没有问题,但是我还需要我以前的上下文中的信息,因此解决方法无法真正解决我的问题。
相关连结
我已确定问题不是HTML问题,因此我将不包含我尝试过的HTML修复程序的链接。这个问题虽然是由CSS触发的,但并非植根于CSS,因此我也不会包含CSS链接。
使用该声明的目的是什么:
add_library(<tgt> [SHARED|STATIC] IMPORTED)
Run Code Online (Sandbox Code Playgroud)
根据我的发现,即使您在上面创建导入的库目标,您仍然需要指定实际的.so或.a的具体位置.这将需要至少3个cmake命令链接到可执行文件,编译器仍然不会自动搜索操作系统上的公共包含目录.
从我理解的CMake文档中,有三种方法可以链接未在整个应用程序/库的子项目中构建为目标的库.
CMake target_link_libraries()文档
使用链接器标志:
target_link_libraries(<tgt> [SHARED|STATIC|...] -lncursesw)
Run Code Online (Sandbox Code Playgroud)使用第二种方法时的一个主要区别是它只需要一行代码,并将搜索您操作系统上所有编译器的预定义包含目录.任何人都可以帮我理解为什么使用add_library()方法?
其他相关的SO帖子: