我正试图在我的React应用程序中创建snackbar组件,该组件允许我在应用程序中的任何位置设置警报。我正在使用redux toolkt,到目前为止我已经:
- 一个带有appendSnackbar(接受文本字符串(和removeSnackbar的reducers的snackbarSlice
- Snackbar组件;useSelector";从react redux显示在该状态中找到的第一个snackbar,然后调用removeSnackbar,直到没有剩余的snackbar为止
到目前为止,它看起来很简单,也很有效,但现在我想在一些小吃条中包含一个按钮,当点击时,它会调用一个函数。需要调用的函数将从我最初调度的同一个地方设置;appendSnackbar"然而,在状态中设置函数违反了Redux原则。
对于这样一种设计,我保留了一个小吃条列表,以便在点击它们上的按钮时显示它们应该调用的函数,还有什么替代方法?
我将用我的解决方案来回答这个问题。
第一步是从任何需要的地方发送appendSnackbar。那部分没有改变。改变的是存储在小吃条状态中的内容。与该消息一起;methodName";存储为字符串。
第二步,在读取状态的snackbar组件中,switch语句读取";methodName";从state对象,并调用哪个方法具有该名称。
这似乎远非理想,但考虑到只需要几种方法,它就完成了任务。