javascript - 即使使用正确的数据调用 reducer,Redux 状态也不会更新
问题描述
出于某种原因,即使 reducer 运行并且 console.log 显示正确的数据被传递给它,redux 存储也没有更新。
相关文件:
- 应用程序.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;
- 注册.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 商店中。
解决方案
在您的动作创建者中:
export const setUser = (user: any) => (return { type: 'SET_USER', user });
推荐阅读
- linux - 在 shell 脚本中运行服务器后如何运行另一个命令?
- git - TFS GIT 拉取请求报告?
- python - 如何在python中获取嵌套异常的堆栈跟踪?
- protobuf-net - 如何解决“算术运算导致溢出。” 对于具有长值的枚举
- r - 使用 ID 对虚拟表值进行分组
- javascript - Chrome 扩展程序 - 保存状态
- javascript - 如何在 laravel 中实现 select2
- kubernetes - 有没有办法在一定的空闲时间后将 GKE 集群的大小调整为 0 个节点?
- r - 如何使用 R 生成唯一 UUID 值的数组?
- mysql - 使用 PhpMyAdmin 将多个 CSV 文件合并到一个数据库中