当前位置: 首页 > 面试题库 >

向Redux Reducer添加回调

马清野
2023-03-14
问题内容

向传递给动作的回调添加回调时,是否会出现任何错误/反模式式的错误(就“ react-in-react / redux
”而言)action.data

// reducer
ACTION_FOR_REDUCER() {
  var x = 123
  if ( action.data.callback ) action.data.callback( x )
  return {
    something: action.data.somedata
  }
},

然后稍后在调用操作时在App中访问该数据(也许在容器中)

// later in the app
this.props.dispatch(changeSomething({
  somedata: somedata,
  callback: (x) => { console.log(x) }
}))

问题答案:

这个想法没有错,实现是正确的。

而不是添加回调,而是从操作中返回一个Promise(您将需要使用redux-thunk中间件或类似的替代方法)。

然后,您可以简单地执行以下操作:

dispatch(myAction).then(callback);

当然,您也可以在回调中简单地调度另一个动作,通常最终是一个复合动作。

const myAction = ...
const callbackAction = ...

const compoundAction = () => dispatch => {
     dispatch(myAction())
         .then(() => dispatch(callbackAction()));
};


 类似资料:
  • 问题内容: 我们有一个简单的项目,我们从套接字读取数据,并希望用即将到来的数据填充表,但是我们找不到找到将行添加到尚未创建的对象的方法,只能在以下位置找到添加行的方法:表的创建时间。 是否可以向中动态添加行,或者有更好的替代对象来处理这种显示数据的方式? 编辑 :非常感谢您的回答。 他们三个看起来都很有前途,但是我只选择一个,我认为最好的就是纪尧姆的。 问题答案: 您应该创建一个自定义。A 实际上

  • 问题内容: 我有一个运行良好的Django应用程序。我正在添加REST服务。我正在寻找有关REST策略的其他信息。 以下是一些我正在绞尽脑汁的事例。 现在,我正在使用带有大量补丁的Django-REST API。 我正在考虑退一步,而只是在Django中编写返回JSON结果的视图函数。 我还可以看到在Apache中过滤REST请求并将它们路由到一个单独的非Django服务器实例。 请为每个答案指定

  • 我创建了一个JPanel,上面有我需要的所有JRadioButtons(称为PortSettings)。我还有一个按钮,叫做端口设置,当用户单击该按钮时,我需要JPanel上来显示单选按钮。我尝试将JPanel添加到actionlistener中,但没有效果。我的代码在下面。除了portsettings按钮之外,我已经从其他按钮中删除了所有其他ActionListener。如果这个问题让人困惑,我

  • 我有邮件地址的以及用户ID(列表中的每个条目类似于::,:)。 我想创建一个,其中每个键都是电子邮件地址的域名,value是来自该域的电子邮件列表: 为了达到这个目的,我做下面的事情。问题是,当我试图向条目上现有的列表添加新的列表条目时,java会向添加新的记录,而不是使用当前的记录。我的预测是方法总是返回false。 我得到的输出: 应该是:

  • 事件适配器 事件活动 @override public void onBindViewHolder(@nonnull ViewHolder holder,final int position){

  • 问题内容: 是否可以在向其添加一些参数数据的同时将请求转发给另一个控制器?我尝试添加到ModelMap中,但是它似乎不存在问题。我正在做类似的事情: 我能想到的唯一其他方法是将参数放在会话上,然后将其弹出目标控制器。 问题答案: 最简单的方法是将数据添加到请求中。 由于这是转发,因此将相同的请求传递到服务器内的不同处理程序。 作为示例,让我们从两个控制器的简单设置开始,一个转发到另一个: 添加数据

  • 问题内容: 我想在JAR文件中包含资源文件(图像,文本文件…)。我将资产文件夹添加到类路径中,因此当我在netBeans中运行该程序时,程序运行正常。 但是,如果我构建项目,则会收到错误消息: 这是正常错误吗? 所以我试图像这样手动添加资产: 但这行不通。我有事吗?对不起,我的英语,谢谢您的帮助。 问题答案: 不要将文件放在桌面上。转到项目的Source文件夹,然后将其复制到该文件夹​​中。在Ne

  • 几个小时以来,我一直试图找到一种方法来复制n次列,并为它们添加一个,但运气不佳。请帮帮忙! 当前数据帧: 输出: