最简明清晰使用react redux 【java角度】

说明

  • redux是用作中间件缓存性质,react用户使用redux时不必层层通过props传数据
  • 任一处修改了redux中某一数据,其他调用处会实时刷新对应数据
  • 使用场景

可以用作数据回显,例如:点开详情页,然后回退,填充原始筛选条件

环境准备

  • 按如下示例需特别注意命名,存与取得type名字要一致比如SET_ISSUE_FILTERS
  • 封装的方式取数据要检验效果,有失败现象,如{getIssueFilters}
package.json引入依赖
  "devDependencies": {
    "redux-logger": "3.0.6",

  "dependencies": {
    "redux": "~4.0.1",
    "redux-thunk": "~2.3.0",

//存数据
//D:\d_work_code\code_xiaomi\com_mitest_hina\src\actions\issueManager.js
export const  setIssueFilters = data => dispatch => {
  dispatch({
    type: 'SET_ISSUE_FILTERS',
    payload: data
  })
}
export const getIssueFilters=(keyName)=>{
  if(keyName){
    return store.getState().issueFilters&&store.getState().issueFilters[keyName]
  }
  return store.getState().issueFilters
}

//取数据
//D:\d_work_code\code_xiaomi\com_mitest_hina\src\reducers\index.js
import issueFilters from './issueFilters'
export default combineReducers({
  issueFilters,
  riskReport
})
//D:\d_work_code\code_xiaomi\com_mitest_hina\src\reducers\issueFilters.js
const initialState = {
 /* form: {
    pageNum: 1,
    pageSize: 10,
  }*/
}
export default (state = initialState, action = {}) => {
  const { type, payload } = action
  switch (type) {
    case 'SET_ISSUE_FILTERS':
      // return Object.assign(state, { form: { ...state.form, ...data } })
      return payload ? payload : {state}
    default:
      return state
  }
}

相关方案

  • 取数据有两种方式,1:通过store,2:通过props
  • 建议不要用2方式,需要声明到
存数据
import {store} from '../../../store'
    store.dispatch(setIssueFilters({...data,'tabActive':tabActive}))

//取数据方式1
import {store} from '../../../store'
store.getState().issueFilters

//取数据方式2,需connect声明
import { connect } from 'react-redux'

	console.log('handleQueryAction',{getIssueFilters},store.getState().issueFilters, this.props.issueFilters)
// export default IssueBrowse
export default connect((state) => {
  return {
    issueFilters: state.issueFilters
  }
})(IssueBrowse)

关系图

在这里插入图片描述

相关资料

https://blog.csdn.net/weixin_40030173/article/details/119355462
https://blog.csdn.net/u011077672/article/details/82684019

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值