如何在redux中存储自动完成结果并做出反应

时间:2018-05-11 13:05:21

标签: reactjs autocomplete redux redux-thunk react-select

我试图弄清楚如何最好地使用react,redux和自动完成组件。目前,我正在使用react-select。我遇到的问题是在何时何地进行API调用以检索自动完成结果。

我尝试过两种方法来解决这个问题:

  1. 从组件内部或通过从包装组件的容器传入的回调进行API调用。这对我来说很好。我想单位测试它的结果有点不整齐。

  2. 在击键时提高redux动作。在动作创建者中进行API调用。通过使用redux-thunk中间件,可以解决承诺,并将搜索结果作为其有效负载引发新操作,并存储在商店的某些部分中。自动填充组件一直在侦听此列表并呈现结果列表。我部分使用了react-select,但输入组件的状态在随后的击键中被消除了。

  3. 我正在寻找有关这两种方法的优点/缺点的指导,以及是否有最佳实践采用。

    感谢。

1 个答案:

答案 0 :(得分:1)

以防万一有人登陆这里寻求更新。

经过几个月的反应并积累了更多的经验,我可以在这里提及我所走的道路。

虽然可以将自动完成结果存储在redux存储中,但这样做几乎没有好处。我确实将此作为实验来实现。由于这些结果对于用户而言是短暂的,因此将其存储在组件状态中是完全合理的。这是我采取的最后一种方法。

顺便说一句,如果在页面上多次使用自动完成功能,则可能会针对搜索查询缓存结果,以减少服务器上的请求并提高客户端性能。我决定在这里使用redux在我遇到的情况下跨多个自动完成实例共享数据。

我还将自动完成库从react-select更改为降档,以更好地控制自动完成的实现。

YMMY一如既往。