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

React-redux交叉访问状态值

叶恩
2023-03-14

在过去的两周里,我一直在使用redux,我面临着一个问题,我想访问/更改另一个reducer的状态值。我怎样才能做到这一点?


    export function add(data) {
      return {
        types: [types.ONADD, types.ONADDSUCCESS, types.ONADDFAIL],
        payload: {
          response: api.add(data).then(response => response),
          data
        }
      };
    }


    export default createReducer(initialState, {
      [types.ONADD](state) {
        return {
          ...state,
          message: 'Updating Records'
        };
      }
     });

提前感谢!

共有1个答案

壤驷凯
2023-03-14

我想你处理这个问题的方式不对。您应该尽可能地规范数据,然后使用connect装饰器为UI编写所需的状态。例如,消息可以嵌套在“朋友”的节点下,但最好将它们放在自己的存储区中,然后创建一个函数,根据关系从朋友那里选择消息。这将为您提供免费的聚合(您有3条未读消息)。查看reselect以一种好的(和缓存的)方式来实现这一点。

编辑:

您可以编写分派多个操作的中间件:

export default (store) => (next) => (action) => {
   if(!action.types){
     return next(action);
   }

   action.types.forEach(type => {
     next({
       type,
       payload: action.payload
     })
   });
}

然后从一个动作创造者那里这样称呼它:

export function addMessage(message){
  return {
    types: ['ADD_MESSAGE', 'UPDATE_USER'],
    payload: message
  }
}
 类似资料:
  • 问题内容: 我只是做一个简单的应用程序来学习与redux异步。我已经使所有工作正常进行,现在我只想在网页上显示实际状态。现在,我实际上如何在render方法中访问商店的状态? 这是我的代码(所有内容都在一页中,因为我只是在学习): 因此,在状态的render方法中,我想列出商店中的所有内容。 谢谢 问题答案: 您应该创建单独的组件,该组件将侦听状态更改并在每次状态更改时进行更新:

  • 我只是做了一个简单的应用程序学习异步与Redux。我已经使所有的工作,现在我只想显示的实际状态到网页上。现在,我如何在render方法中实际访问存储的状态? 这里是我的代码(所有内容都在一个页面中,因为我只是在学习): 谢谢

  • 问题内容: 我有一个化简器,为了计算新状态,我需要操作中的数据以及该化简器未管理的部分状态数据。具体来说,在下面将显示的减速器中,我需要访问该字段。 initialState.js: FormsReducer.js: index.js(根减速器): 如何访问此字段? 问题答案: 我将为此使用thunk,这是一个示例: 基本上,您会获得操作所需的所有数据,然后可以将该数据发送到减速器。

  • 问题内容: 我想使用React.js制作一个应用程序。我希望它可以轻松地从外部进行自定义(例如,通过编写用户脚本)。我尝试使用的想法是在根元素状态(如或)中创建一些特殊的属性,以便插件开发人员可以在此处添加一些内容。我的问题是:这是否是一个好方法,是否有Right Way™实现与我的目标相似的目标,最后,插件开发人员将如何使用这些道具? 问题答案: 一种选择是可观察的。基本上,它是一个对象,您可以

  • 我试图做一个登录表单,它需要我迁移我的soloreac应用程序在反应redux应用程序。我面临许多错误,并坚持与。我是这方面的新手,任何帮助都会得到重视。 指数js文件 应用程序。js文件: 我得到这个错误。我不明白是什么文件或代码导致了这个错误。 类型错误:存储。getState不是新提供程序节点的函数\u modules/react redux/es/components/Provider。j

  • 问题内容: 在进行Ajax调用的redux-form 函数中,Ajax中需要Redux状态的某些属性(例如,用户ID)。 这将是很容易的,如果我想定义形式的成分,只要调用:在任何我需要传递,并从阅读中我的。 但是,像一个出色的React-Redux开发人员一样,我编写了 单独的视图组件和容器 ,因此视图组件可以很简单,几乎没有行为。因此,我想 在我的container中定义handleSubmit

  • 我使用react native和redux,但性能很慢.例如,在初始页面上,我有一个检查系统,如果处于还原状态的用户通过了身份验证,则显示home page,如果没有显示auth屏幕。 当我的用户通过身份验证时,我的应用程序最初会呈现身份验证屏幕几秒钟,然后呈现主屏幕,这是一个糟糕的用户体验,所以我的redux状态可能需要时间更新,而且速度很慢。 请看我的代码并帮助我做错了什么。 我正在检查异步存

  • 我有一个lambda,它使用来自另一个AWS帐户的Athena的数据。因此,我有一个角色,我的lambda假定该角色具有跨帐户访问权限。我在lambda中使用了STS客户端。有时lambda运行得非常好,有时它会出现故障,给我这个错误。 “errorMessage”:“调用StartQueryExecution操作时发生错误(ExpiredTokenException):请求中包含的安全令牌已过期