在 Redux 的 Reducer 中更新值

Posted

技术标签:

【中文标题】在 Redux 的 Reducer 中更新值【英文标题】:update values in the Reducer in Redux 【发布时间】:2022-01-05 02:18:03 【问题描述】:

我从导航中获得了两个值,即company 和 id

let id = props.route.params.oved;
console.log("id-->",id);
let company = props.route.params.company;
console.log("company--->",company);

我得到了两个像这样的整数值:--

id-->1
comapny-->465

图片说明:---

如果我在该 textInput 中输入 1 并单击卡片(让我们说第一张卡片 ie465,那么我在导航中得到这两个值,就像我上面提到的整数一样。所以每次我得到更新的值.

我正在从导航中获取更新的值。

所以我想将这些值存储在 redux 中。

action.js:--

import  CHANGE_SELECTED_COMPANY  from "./action-constants";
export const changeCompany = (updatedCompany, updatedId) => 
  return 
    type: CHANGE_SELECTED_COMPANY,
    updatedCompany,
    updatedId,
  ;
;

reducer.js:--

import  CHANGE_SELECTED_COMPANY  from "../actions/action-constants";

const initialState = 
  company: "",
  id: "",
;
const changeCompanyReducer = (state = initialState, action) => 
  switch (action.type) 
    case CHANGE_SELECTED_COMPANY:
      return 
        company: 
          company: action.updatedCompany,
          id: action.updatedId,
        ,
      ;
    
  
  return state;
;

export default changeCompanyReducer;

configure-store.js:--

import changeCompanyReducer from "./reducers/change-company-reducer";
const rootReducer = combineReducers(changeCompanyReducer);

如何在 Redux 中存储从导航获取的更新值?

能否请你为 redux 写代码?

【问题讨论】:

【参考方案1】:

在组件中创建一个更新值的函数

const updateReducer = () => 
  dispatch(changeCompany(props.route.params.oved, props.route.params.company))

然后在反应导航生命周期事件中调用函数

useEffect(() => 
    const unsubscribe = navigation.addListener('focus', () => 
      updateReducer()
    );

    return unsubscribe;
  , [navigation])

更好的解决方案可能是在导航发生之前更新减速器,而不是在参数中传递数据,而是从 redux 中提取数据,但这是问题的答案

【讨论】:

以上是关于在 Redux 的 Reducer 中更新值的主要内容,如果未能解决你的问题,请参考以下文章

Redux 开发工具状态图显示reducer 正在更新另一个reducer

Redux:重用reducer来更新多个状态属性

Redux (with React) Reducer switch 语句不更新状态

在 redux 中使用样板动作和 reducer

React / Redux:在reducer中更新对象的正确方法

redux reducer 不更新 store 中的状态