Javascript Redux存储为不同的组件返回不同的状态(React)

Javascript Redux存储为不同的组件返回不同的状态(React),javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我是redux的新手,一直在尝试调试这个问题。基本上,我有两个不相关的组件(不是父-子、子-父或兄弟),我想利用Redux进行全局状态管理,将数据从一个组件传递到另一个组件 代码的工作原理是组件a能够将数据发送到存储。在组件A上记录store.getState(),我可以看到新的更新状态。但是,在组件B上记录store.getState()时,我无法看到相同的更新状态。(项目将为空) 使用ReduxDevTools扩展,我可以看到在调用onPress方法后组件A中的状态会更新,但对于B则不会 组

我是redux的新手,一直在尝试调试这个问题。基本上,我有两个不相关的组件(不是父-子、子-父或兄弟),我想利用Redux进行全局状态管理,将数据从一个组件传递到另一个组件

代码的工作原理是组件a能够将数据发送到存储。在组件A上记录store.getState(),我可以看到新的更新状态。但是,在组件B上记录store.getState()时,我无法看到相同的更新状态。(项目将为空)

使用ReduxDevTools扩展,我可以看到在调用
onPress
方法后组件A中的状态会更新,但对于B则不会

组件A状态已更新:

B部分状态不变:

组件A

class a extends Component {

 // implementation code

   onPress = r => {
      this.props.sendProblem(r)
      // console.log(store.getState())
   }

 // implementation code

 }

 A.propTypes = {
   sendProblem: PropTypes.func.isRequired
 };

 export default connect(null, {sendProblem})(A)
组件B

// implementation code 

componentDidMount() {
// console.log(store.getState())
}

// implementation code

B.propTypes = {
  item: PropTypes.object
}

const mapStateToProps = state => ({
   item: state.items.item
});

export default connect(mapStateToProps)(B);
**问题减速机**

import { ABC } from '../actions/types';

const initialState = {
    item: {}
}

export default function(state= initialState, action) {
    switch (action.type) { 
        case ABC: 
            return {
              ...state,
              item: action.payload
            } 
        default:
            return state; 
    }
}
// implementation code 

export default combineReducers({
  auth: authReducer,
  errors: errorReducer,
  items: problemReducer
});

// root reducer used in store.js to create store
**问题行动**

import {
   ABC
 } from "./types";

export const sendProblem = r => dispatch => {
     dispatch({
      type: ABC,
      payload: r
    })
};
**根部减压器**

import { ABC } from '../actions/types';

const initialState = {
    item: {}
}

export default function(state= initialState, action) {
    switch (action.type) { 
        case ABC: 
            return {
              ...state,
              item: action.payload
            } 
        default:
            return state; 
    }
}
// implementation code 

export default combineReducers({
  auth: authReducer,
  errors: errorReducer,
  items: problemReducer
});

// root reducer used in store.js to create store

任何帮助都将不胜感激!感谢您在组件上运行store.getState()

您不应该在组件中这样做,我看不到任何代码。您可以在组件A中找到问题,但问题来自何处?没有人知道,因为它不作为操作存在。
export const ABC=r=>dispatch=>{
如何不会导致错误,因为您已经在此处定义了它:
import{ABC}从“./types”
?我认为您发布的代码与为您产生错误的代码无关。感谢您的回复,HMR。抱歉,代码是
export const sendProblem=r=>dispatch=>{
,在那里有一个输入错误@HMR。只是澄清一下,我没有从代码的编译中得到任何错误,问题是状态只在组件a而不是组件B中正确更新和记录。
onPress=r=>{
r应该是什么?您可以替换
export const sendProblem=r=>dispatch=>{
with
export const sendProblem=r=>({type:ABC,payload:r})
它将被调度,因为您在设置的减速机中使用了CONNECTION
state.item
并且在MapStateTrops中获得了
state.items.item
。您在任何地方都没有设置
state.items
以便在MapStateTrops运行时都无法获得未定义的属性项。嘿@HMR,我不太确定是否有错误这就是问题所在,因为我在组合减速器中引入了
state.items
(如上所示编辑),感谢
运行store.getState()关于组件
您不应该在组件中执行此操作,我看不到任何代码。您在组件A中分派sendProblem,但由于它不作为操作存在,所以没有人知道它来自何处。
export const ABC=r=>dispatch=>{
如何不会导致错误,因为您已经在此处定义了它:
import{ABC}从“./types”
?我认为您发布的代码与为您产生错误的代码无关。感谢您的回复,HMR。抱歉,代码是
export const sendProblem=r=>dispatch=>{
,在那里有一个输入错误@HMR。只是澄清一下,我没有从代码的编译中得到任何错误,问题是状态只在组件a而不是组件B中正确更新和记录。
onPress=r=>{
r应该是什么?您可以替换
export const sendProblem=r=>dispatch=>{
with
export const sendProblem=r=>({type:ABC,payload:r})
它将被调度,因为您在设置的减速机中使用了CONNECTION
state.item
并且在MapStateTrops中获得了
state.items.item
。您在任何地方都没有设置
state.items
以便在MapStateTrops运行时都无法获得未定义的属性项。嘿@HMR,我不太确定是否有错误这就是问题所在,因为我已经将
状态带入了组合减速器中的项目(如上所示编辑),谢谢