You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按钮点击布尔值传入Redux Store时报错:customer.updateAutoLimitChange不是函数

解决Redux报错:customer.updateAutoLimitChange is not a function

让我们一步步排查并解决你的问题:

1. 修复按钮点击的参数传递逻辑

你的按钮目前没有把布尔值传递给handleSubmit函数,而且Button组件的{true}/{false}子元素不会被 onPress 事件捕获,需要修改 onPress 的调用方式,直接传递对应布尔值:

<View style={LimitStyle.autoInc}>
  <Button 
    title={'Increase Limit Automatically'} 
    onPress={() => this.handleSubmit(true)} 
    color={'#FFFFFF'} 
  />
</View>
<View style={LimitStyle.manInc}>
  <Button 
    title={'Wait for my permission'} 
    onPress={() => this.handleSubmit(false)} 
    color={'#20273D'} 
  />
</View>

2. 修正handleSubmit函数的参数使用

你之前错误地使用了全局内置对象Boolean,这完全不是按钮传递的目标布尔值,需要修改函数来接收参数,并正确传入Redux action:

handleSubmit = (autoLimitChange) => {
  console.log('autoLimitChange: ', autoLimitChange);
  if (autoLimitChange !== null) {
    // 确保updateAutoLimitChange是正确导入的action creator
    dispatch(updateAutoLimitChange(autoLimitChange));
    navigation.navigate('Salary');
  }
}

3. 检查Redux Action Creator的定义

报错提示updateAutoLimitChange不是函数,大概率是这个action creator没有正确定义。你需要确保它是一个返回action对象的函数,比如:

// 示例:action文件中的定义
export const updateAutoLimitChange = (value) => ({
  type: 'UPDATE_AUTO_LIMIT_CHANGE', // 这个type要和reducer中的处理逻辑对应
  payload: value
});

4. 确保组件正确连接Redux

如果你使用的是类组件,需要通过connect高阶组件把dispatch和action creator映射到组件props中:

import { connect } from 'react-redux';
import { updateAutoLimitChange } from '../actions/customerActions';

class YourComponent extends React.Component {
  // ...你的组件其他代码
  handleSubmit = (autoLimitChange) => {
    console.log('autoLimitChange: ', autoLimitChange);
    if (autoLimitChange !== null) {
      // 调用props中映射后的action creator
      this.props.updateAutoLimitChange(autoLimitChange);
      navigation.navigate('Salary');
    }
  }
}

// 映射action creator到props
const mapDispatchToProps = {
  updateAutoLimitChange
};

export default connect(null, mapDispatchToProps)(YourComponent);

5. 检查Reducer是否处理对应Action

最后要确保你的customer reducer里处理了这个action,正确更新state:

const initialState = {
  autoLimitChange: false, // 设置默认值
  // 其他state字段
};

export default function customerReducer(state = initialState, action) {
  switch (action.type) {
    case 'UPDATE_AUTO_LIMIT_CHANGE':
      return {
        ...state,
        autoLimitChange: action.payload
      };
    // 其他action处理逻辑
    default:
      return state;
  }
}

按照以上步骤逐一排查,应该就能解决你遇到的报错问题。

内容的提问来源于stack exchange,提问作者Jason Byron Beedle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:22:37