Je vais avoir un problème avec un composant qui a des propTypes nécessaires.état de mise à jour avant de rendre: PropType marqué comme nécessaire, mais non définie
L'erreur que je reçois est:
Warning: Failed prop type: The prop `firstname` is marked as required in `UserHeader`, but its value is `undefined`.
in UserHeader (at App.js:32)
in App (created by Connect(App))
in Connect(App) (at index.js:17)
in Provider (at index.js:16)
Et mon code ...
import React, { Component } from 'react';
import { connect } from 'react-redux';
import ErrorBoundary from './containers/ErrorBoundary'
import UserHeader from './components/UserHeader';
import Header from './components/Header';
class App extends Component {
constructor(props) {
super(props);
}
componentWillMount() {
// Pretend this is an API call that takes a second
setTimeout(() => {
const data = {
user: {
firstname: 'bughunter',
level: 55
}
};
this.props.didMountHandler(data)
}, 1000);
}
render() {
return (
<ErrorBoundary>
<Header />
<UserHeader
firstname={this.props.firstname}
level={this.props.level}
/>
</ErrorBoundary>
);
}
}
const mapStateToProps = (state, ownProps) => {
return {
firstname: state.user.firstname,
level: state.user.level
}
};
const mapDispatchToProps = dispatch => ({
didMountHandler: data => {
dispatch({
type: 'USER_DATA_RECEIVED',
data
});
}
})
const AppContainer = connect(
mapStateToProps,
mapDispatchToProps
)(App);
export default AppContainer;
Je modifier l'état avant que la méthode render
a appelé donc je suis confus comment les accessoires pour UserHeader
sont vérifiés avant que le setTimeout
ne soit terminé?
Comment suis-je capable de tenir à distance sur le rendu/propChecking jusqu'à ce que setTimeout
a terminé?
Je pensais que sur la configuration par défaut un état initial lors de la création du magasin, comme ceci:
{
user: {
firstname: '',
level: 0
}
}
... mais cela semble un peu hackish.
Peut être que vous voulez à la caisse ce https://stackoverflow.com/questions/43312223/asynchronous-call-in-componentwillmount-finishes-after-render-method – praveenweb