Javascript React本机Redux还原程序不工作
我试图将redux实现到一个相对简单的应用程序中,但是我的操作似乎没有正确地触发还原程序。通过控制台日志记录,操作似乎正在启动,但没有执行相应的减速器 App.js: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
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))