0
我收到错误/警告“失败的道具类型:道具logged
在App
中被标记为需要,但在App中它的值为undefined
”。我无法弄清楚为什么它没有从商店获得价值。使用mapStateToProps()连接到商店
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import {BrowserRouter, Switch, Route, Redirect} from 'react-router-dom';
import {Provider, connect} from 'react-redux';
import store from './store/store';
import Signup from './components/Signup';
import Home from './components/Home';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
logged: this.props.logged
};
}
render() {
return (
<Provider store={store}>
<BrowserRouter>
<Switch>
<Route exact path="/signup" component={Signup}/>
<Route exact path="/home" component={Home}/>
<Route exact path="/" render={() => (
this.state.logged ?
<Redirect to="/home" push/> : <Redirect to="/signup" push/>
)}/>
<Redirect to="/"/>
</Switch>
</BrowserRouter>
</Provider>
);
}
}
App.propTypes = {
logged: PropTypes.bool.isRequired
};
const stateToProps = (state) => ({
logged: state.loggedUserState.logged
});
connect(stateToProps)(App);
ReactDOM.render(<App/>, document.getElementById('root'));
loggedUserReducer.js
const initialState = {
pending: true,
logged: false
};
const loggedUserReducer = (state = initialState, action) => {
if (action.type === 'GET_LOGGED_USER') {
return Object.assign({}, state, {
pending: false
});
}
return state;
};
export default loggedUserReducer;
store.js
import { createStore, combineReducers } from 'redux';
import loggedUserReducer from '../reducers/loggedUserReducer';
const reducers = combineReducers({
loggedUserState: loggedUserReducer
});
const store = createStore(reducers);
export default store;
非常有帮助。谢谢。 –
我明白,谢谢。 – ArchNoob
从概念上讲,它是有道理的......它仍然给ESLint错误“'App'是一个没有类别分配的类”。我正在通过它。 –