我正在编写一个可在React中显示有关移动应用程序信息的网站,并且我正在使用Redux来存储有关当前应用程序的信息。我在标题中有一个输入文本字段,用户可以在其中输入一些应用程序ID,如果它是有效ID,他们将被重定向到另一页,如果ID无效,则会显示snackbar消息,如果用户只是点击输入,则还将显示一条小吃栏,并带有相应的消息。 AppNotFound
是包装快餐条的组件。
我正在使用redux thunk调度一个操作,该操作检查onKeyDown
方法(getAppInfo
)内的应用程序id是否有效(它是一个异步函数)。理想情况下,我想从onKeyDown
方法中的redux中得到结果。但是因为动作是异步发送的,所以我不能。
因此,我想让render
根据found
属性的值(无论是否找到应用程序)显示一个小吃栏。因此起初found
将是undefined
,因为异步分派不会在render
中返回结果,但是found
会变成true
或{{ 1}},然后我们可以显示小吃栏。由于道具已更改,渲染将第二次自动调用。但这不会发生。
就模式而言,实现我想要的正确方法是什么?我不想使用false
,因为它已被弃用。
这是我的代码:
componentWillReceiveProps
答案 0 :(得分:0)
由于仍然没有人没有回答这个问题,因此我将提供最近到达的解决方案。
本质上,问题在于AppSearchBarInput
的显示主要取决于是否找到了该应用程序。此操作必须是异步的,因为该信息来自Web API。因此,我正在使用redux-thunk
,并且正在通过道具接收移动应用信息。但是snackbarOpen
属性处于状态,这是一个问题,因为小吃栏取决于状态属性,而状态属性本身取决于异步接收的道具。
解决困境的方法是也将snackbarOpen
移到道具上。因此,现在,如果找不到该应用,则应从snackbarOpen
thunk直接调度将true
设置为getAppInfo
的操作,如果该应用为空白,则应从onKeyDown
直接调度。另一方面,应从snackbarOpen
分派将handleCloseSnackBar
设置为false的操作。