Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
315 views
in Technique[技术] by (71.8m points)

reactjs - componentdidmount - prop-types validation

Thank you for your time.

Noob React question... i know componentDidMount will fire after the first render of the component, which is why the prop-types eslint error i am getting is being triggered. However i am not sure how you would fix this and add validation, propTypes validation fires before the getArticles() function therefore if i declare a propTypes it returns undefined... as i.e. articles has not been defined until after the first render and and componentDidMount is called... have had a good dig and cant see a simple solution for what i assume is a common problem??

Question - how do you validate props that have not yet been fetched.

class ArticlesList extends Component {
  componentDidMount() {
    this.props.getArticles();
  }

  render() {
    return this.props.articles.map(({ id, date, heading, body }) => (
      <Article key={id} date={date} heading={heading} body={body} />
    ));
  }
}

const mapStateToProps = (state) => {
  return { articles: state.articles };
};

export default connect(mapStateToProps, { getArticles })(ArticlesList);
question from:https://stackoverflow.com/questions/65876155/componentdidmount-prop-types-validation

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

you would only get an issue for an undefined prop if you had add to your prop validation isRequired like PropTypes.array.isRequired. With that in mind you only need to define correctly your propType:

ArticlesList.propTypes = {
  articles: PropTypes.array,
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...