我可以像这样访问redux中的状态吗?

问题描述 投票:1回答:1

Source Code

redux.js

import parent_reducer from './parent_redux';
import { combineReducers } from 'redux';

export default combineReducers({ parent:parent_reducer });

parent_redux.js

import { combineReducers } from 'redux';
import { createAction, handleActions } from 'redux-actions';
import child_reducer from './child_redux';

const initial_state = {
    number: 0
};

const parent_reducer = handleActions({
    ...
}, initial_state);

export default combineReducers({ self: parent_reducer, child: child_reducer });

child_reudx.js

import { createAction, handleActions } from 'redux-actions';

const initial_state = {
    number: 0
};

export default handleActions({
    ...
}, initial_state);

What I want

在上面的源代码中,当访问数字变量时,它如下。 state.parent.self.number和state.parent.child.number

但我想按如下方式访问它。 state.parent.number和state.parent.child.number

分层次使用redux时经常会出现这种不便。

有什么办法可以解决吗?谢谢阅读 :)

javascript reactjs redux react-redux redux-actions
1个回答
1
投票

redux.js

import parent_reducer from './parent_redux';
import { combineReducers } from 'redux';

export default combineReducers({ parent:parent_reducer });

parent_redux.js

import { combineReducers } from 'redux';
import { createAction, handleActions } from 'redux-actions';
import child_reducer from './child_redux';

const initial_parent_state = 0;

const parent_reducer = handleActions({
   ...
}, initial_parent_state);

export default combineReducers({ number: parent_reducer, child: 
child_reducer });

child_reudx.js

import { createAction, handleActions } from 'redux-actions';

const initial_state = {
  number: 0
};

export default handleActions({
   ...
}, initial_state);

我只是在parent_redux.js上进行了一些小改动,同时保持其余代码相同。

这应该给你所需的状态结构。

你必须要理解一件事,你的减速器都使用相同的密钥number返回一个对象,所以你需要附加一个密钥self作为额外的来建立'Redux'的父子关系来建立状态。

相反,如果返回原始值,则存储该值的键可以与上一个reducer返回的对象中的键相同。

希望这能为您解决问题,而不会破坏您的代码模式。

© www.soinside.com 2019 - 2024. All rights reserved.