Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React本机Redux还原程序不工作_Javascript_Reactjs_React Native_Redux_React Redux - Fatal编程技术网

Javascript React本机Redux还原程序不工作

Javascript React本机Redux还原程序不工作,javascript,reactjs,react-native,redux,react-redux,Javascript,Reactjs,React Native,Redux,React Redux,我试图将redux实现到一个相对简单的应用程序中,但是我的操作似乎没有正确地触发还原程序。通过控制台日志记录,操作似乎正在启动,但没有执行相应的减速器 App.js: import {Provider} from 'react-redux'; import configureStore from './src/config/configureStore.js'; const store = configureStore(); export default class App extends R

我试图将redux实现到一个相对简单的应用程序中,但是我的操作似乎没有正确地触发还原程序。通过控制台日志记录,操作似乎正在启动,但没有执行相应的减速器

App.js:

import {Provider} from 'react-redux';
import configureStore from './src/config/configureStore.js';
const store = configureStore();

export default class App extends React.Component {    
render() {
return (
  <Provider store = {store}>
      <RootStack />
  </Provider>
);
}
}
actions/index.js:

export const saveRisk = (payload) => {
  console.log('saved RISK!');
  return (dispatch) => {
    dispatch({type: 'risk_chosen',payload: payload});
  }
}
import { combineReducers } from 'redux';
import RiskReducer from './RiskReducer';

export default combineReducers({
  risk_level: RiskReducer
});
reducers/index.js:

export const saveRisk = (payload) => {
  console.log('saved RISK!');
  return (dispatch) => {
    dispatch({type: 'risk_chosen',payload: payload});
  }
}
import { combineReducers } from 'redux';
import RiskReducer from './RiskReducer';

export default combineReducers({
  risk_level: RiskReducer
});
RiskReducer.js

const INITIAL_STATE = {risk_level: false};
export default (risk = INITIAL_STATE, action) => {
  if(action.type === 'risk_chosen') {
    console.log('RISK REDUCER SUCCESSFUL')
    return {
      ...risk, risk_level: action.payload
    };
  }
  console.log('REDUCER RISK:');
  console.log(risk);
  return risk;
}
RiskTolerance.js(RootStack中使用redux的子组件):

编辑:我已将reducer中的初始值更改为适当的对象,但在调用操作后,我的reducer仍不工作。有什么想法吗?
谢谢大家!

减速器中的初始状态有问题。按如下所示进行更改:


在调用我需要编写的操作时,我发现了这一点:

this.props.dispatch(this.props.saveRisk(riskVal))

谢谢大家的帮助

有道理,RiskReducer的初始值是
false
false.anything=undefined
这肯定是个问题,但在触发操作后,还原程序仍然没有更新。因此,我这样做了,但在触发操作后,还原程序仍然没有更新。有什么想法吗?非常感谢。在调用操作之前,您的componentDidMount()的console.log;它仍然没有定义吗?没有,它返回了正确的值(false)。但是,我的主要问题是,我的操作saveRisk没有调用reducer,并且reducer中的状态(risk_值)没有更新!您的
saveRisk
是一个动作生成器。它不会调用减速机<代码>@connect(mapStateToProps、mapDispatchToProps)。参考:对于您的案例,
@connect(state=>({risk_-level:state.risk_-level.risk_-level}),dispatch=>({saveRisk:(payload)=>dispatch(saveRisk(payload)))
this.props.dispatch(this.props.saveRisk(riskVal))