redux里如何处理数据?

具体场景如下:

// reducer.js
const initialState = {
    test: [
        {    
            id: 1
            show: true    
        },
        {    
            id: 2
            show: true    
        },
        {    
            id: 3
            show: true    
        }
    ]
}
export function testUp(state=initialState, action) {
    switch (action.type) {
        case UPDATE: {
          return {
            ...state,
            // ...action.payload, 正常情况应该这样,但是我需要处理cidList
            takeCidList(state.test, action.payload)
          }
        }
        default:
          return state
      }
}
function takeCidList(test, cidList) {
    const list = []
    // todo get initialState.test
    return list
}

// test.jsx
class Test extends Component {
    // ...
    updateTestState = idList => {
        this.props.updateTestState(idList)
        // idList = [1,4,6,8] 一个id的数组
    }
}
export default connect(null, {updateTestState})(Test)

// action.js
export const updateTestState = idList => ({type: UPDATE, payload: idList})

简单的说,我就是我在react组件中得到的是一个关于id的数组[1,2,3,4]。我需要做的是将state中的test数组中找出id等于[1,2,3,4]的,并把他们的show字段变为false。那么这样的一步操作应该在哪里做啊?
test.jsx中嘛?这样我就需要在test.jsx中获取test这个state。而且在容器组件中这样处理数据真的好吗?
reducer.js中嘛?这样感觉也不够纯粹啊?

阅读 1.9k
1 个回答

这个的话,state里面的数据一般是通用型的数据,然后再根据某个组件需要的数据结构按需映射即可。至于你说在哪里做这一步,在mapStateToProps里面去做,这样能根据组件的需要进行合适的映射,state的数据结构最好是设计的扁平化一点儿,希望对你有帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题