【发布时间】:2021-02-06 17:27:47
【问题描述】:
由于某种原因,即使 reducer 运行并且 console.log 显示正确的数据被传递给它,redux 存储也没有更新。
相关文件:
- App.jsx
import {Provider} from 'react-redux';
import store from './store';
const Stack = createStackNavigator();
export default class App extends Component {
render() {
return (
<Provider store={store()}>
- Store.js
import {createStore, applyMiddleware} from 'redux';
import rootReducer from '../reducers';
import thunk from 'redux-thunk';
const store = (initialState = {}) =>{
return createStore(
rootReducer,
initialState,
applyMiddleware(thunk)
)
}
export default store;
- Register.tsx
...
<Pressable
style={styles.button}
onPress={() => this.props.submitRegistration(this.state)}
>
...
const mapDispatchToProps = (dispatch: any) => {
return {
submitRegistration: (data: any) => {
dispatch(UserActions.submitRegister(data))
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Register);
- 用户操作
import { signUp } from '../../services/backend';
import { setUser } from '../../actions';
export function submitRegister(data: any) {
return async (dispatch: any) => {
const response = await signUp(data);
const responseData = await response.json();
if(responseData.token) {
console.log('here', responseData);
dispatch(setUser(responseData.user));
}
};
}
- 动作创建者
export const setUser = (user: any) => ({
type: 'SET_USER',
user
});
- 用户缩减器
import { SET_USER } from "../actions/actionTypes"
const initialState = {
user: {}
}
const User = (state = initialState, action: any) => {
switch(action.type) {
case SET_USER:
console.log('here action', action.user);
return { user: action.user}
default:
return state
}
}
export default User;
我非常感谢任何可能的帮助。似乎我在某种程度上配置错误,因为即使我设置了初始状态:
const initialState = {
user: {firstName: "John"}
}
它没有反映在 redux 存储中。
【问题讨论】:
标签: javascript reactjs redux react-redux