当前位置: 首页 > 知识库问答 >
问题:

Redux如何将操作传递给特定减速器

汪典
2023-03-14

我对Redux有相当的了解。

我想知道的一件事是,在一个大型应用程序中,会有多个操作和减缩器。

我的问题是

>

reducer中是否存在重复操作?

即使当我查看redux流时,我也不理解这些问题

请澄清我的困惑。

共有2个答案

盖和泰
2023-03-14

1.当一个动作被调度时,它如何找到合适的减速器?

所有操作都会通过应用程序中的所有减速机和中间件,这就是为什么如果某个减速机将处理某个操作,则需要处理switch语句。

2.减速器中是否存在重复动作?

您可以分派一个动作,并根据需要在多个还原器中处理该动作。

3.如何将修改后的状态数据从减速器传回组件?

当您通过connectHOC使用redux连接组件时,您将组件订阅到存储,存储的工作方式是当它更改时通知订阅的组件,然后执行MapStateTops并为组件生成新数据,如果数据已更改,则组件将更新,否则不会更新。

我希望它能帮助你,如果你有任何疑问,请让我知道。

秦才
2023-03-14

当一个动作被调度时,它如何找到合适的减速器?

当一个动作被调度时,如果您使用联合减速器,所有减速器都将被触发。适当的状态更改发生在操作所在的树中。TYPE与分派的操作相匹配。类型。

减速机会有重复动作吗?

让我们考虑一个聊天应用程序。假设有一条新消息传入时,有两个存储名为messageStore和UnderStore。还有一个动作叫做“新信息”。这两个商店在收到新消息时都会更新。

message = (state=[], action) ->
  switch action.type
    when NEW_MESSAGE
      state # new state

unread = (state=[], action) ->
  switch action.type
    when NEW_MESSAGE
      state # new state

combineReducer {message, unread}

在同一个减速器中,可以调度相同的操作两次,但这是不必要的。在不同的减速器中,您可以按照前面提到的方法进行操作。

如何将修改后的状态数据从减速器传递回组件?

  1. 全局存储通过提供程序传递到组件中。根据redux留档,
import { Provider } from 'react-redux';
const store = createStore(combineReducer(message, unread));
<Provider store={store}>
   <App />
</Provider>
class ReduxEmpl extends React.Component {
  render() {
    return <div>I'm connected</div>
  }
}

const mapStateToProps = state => ({ messages: state.message.messages })
const dispatchToProps = dispatch => ({ functionToDispatch: (params) => dispatch(functionToDispatch(params));

export default connect(mapStateToProps, mapDispatchToProps)(ReduxEmpl);

希望我解决了你的困惑:)

 类似资料:
  • 我想在我的组件中触发一个动作。这是一个表示组件,不需要重新创建。路由器实现是使用反应路由器冗余完成的。 main.js 应用:日新社: header.js: employee.js: action-creator.js: 道具将不包含动作,因为我没有将它绑定到道具上。我尝试在App.js中编写mapStateToProps和mapDispatchToProps,如下所示: 导出默认连接(mapSt

  • 我有一个工作良好的JSF片段。单击commandbutton时,它应该通过重定向到自身来重新加载页面。 我得到的错误是 javax.el.elException:不是有效的方法表达式:#{redirectTo}(位于com.sun.el.lang.expressionBuilder.CreateMethodExpression(ExpressionBuilder.java:311)(位于com.s

  • 问题内容: 现在,我所知道的唯一为angularjs调用在标头中动态设置令牌的方法是通过这样的方式: 但是我想弄清楚如何通过$ resource传递此信息,这是一些无效的伪代码: 如何将标头动态传递给angularjs的$ resource? 问题答案: 我不认为这可以按照您尝试的方式完成,因为config对象在action方法上不可用。但是action config方法具有它。因此,您可以做的是

  • 问题内容: 我正在用JavaScript准备一些变量(在我的特定情况下,我想获取GPS位置): 我想通过下面的命令按钮将它们发送到我的托管bean: 如何将JavaScript中的变量和变量发送到JSF托管bean操作方法? 问题答案: 让JS以相同的形式将它们设置为隐藏的输入值。 命令按钮操作方法可以按通常方式将它们作为bean属性进行访问。

  • 问题内容: 我打算将JSON格式的整个表单数据发布到Struts2 Action。以下是我的代码段。纠正我要去哪里的错误或帮助我,以便我可以正确获取Action文件中的所有值。我在操作文件中的所有SOP显示为 我的表格数据变成了 Struts2操作文件: 现在的输出 问题答案: 由于我使用名称,值,所以必须使用名称来获取它。下面是工作代码

  • 问题内容: 我正在创建一种通过传递搜索字段从任何表中选择ID的方法。 但是我得到一个有关语法错误的MySqlException。当我查看“异常”消息时,它向我显示带引号的查询表!如何将表格作为不带引号的参数传递? 问题答案: 大多数数据库不允许您通过参数指定表名或列名。参数用于 值 。如果确实确实需要使它动态化,则应验证输入(它应该是一个已知的表名,并且该表中具有已知的列名),然后将其包括在SQL