【发布时间】:2020-10-07 11:12:58
【问题描述】:
我只是想通过onClick (event) 将connect() 我的LoginPage (component) 与我的Redux Store 和dispatch 联系起来。当我console.log(this.props) 我的调度处理程序login() 不在组件的道具中。
GitHub 仓库 -- https://github.com/jdavis-software/demo.git
问题:为什么我的Redux Store 不是connection 或dispatching 操作?
登录页面:
import React, { Component} from 'react';
import { connect } from 'react-redux';
export class LoginPage extends Component<any> {
render(){
console.log('props doesnt have contain - login(): ', this.props)
return (<button onClick={ () => '' }>Login</button>)
}
}
const mapProps = state => ({ user: state.user })
const dispatchProps = (dispatch) => {
return {
login: () => dispatch({ type: 'USER_LOGGED_IN', payload: true})
}
}
export default connect(mapProps,dispatchProps)(LoginPage)
Redux 配置:
import { IStore, IUser } from '@interfaces';
import { createStore, combineReducers } from 'redux';
import ReduxPromise from 'redux-promise';
// reducers
import userReducer from './user.reducer';
// define the intial global store state
const initialState:IStore = {
user: {
isAuthenticated: false
}
}
const appReducer = combineReducers({user: userReducer})
export default createStore(appReducer,initialState);
用户缩减器:
// initial state
const initalState:IUser = {
isAuthenticated: false
}
// reducer
const userReducer = (state:IUser = initalState, { type, payload}: IPayload): IUser => {
console.log('user reducer start', state)
switch (type) {
case 'USER_LOGGED_IN':
state = { ...state, isAuthenticated: payload }
break;
default:
return state;
}
return state;
};
export default userReducer;
根页面:
import React from 'react';
import { render } from 'react-dom';
import { Provider } from 'react-redux';
// styles
import './index.scss';
// pages
import { App } from '@pages';
// store
import store from './core/store/store';
render(
<Provider store={store}>
<App/>
</Provider>, document.getElementById('app')
);
【问题讨论】:
-
你的 redux-store 配置是什么?
-
我也会看钩子
-
@TasosBu 刚刚添加了它
-
@JamieHutber 是的,我一直在研究这个,只是想在重新连接所有东西之前让它工作。
标签: javascript reactjs redux react-redux