What is the purpose of having functions like componentWillMount in React.js?

前端 未结 5 863
一个人的身影
一个人的身影 2021-02-04 00:32

I have been writing components in React.js recently. I have never had to use methods like componentWillMount and componentDidMount.

rend

5条回答
  •  再見小時候
    2021-02-04 01:30

    componentDidMount is useful if you want to use some non-React JavaScript plugins. For example, there is a lack of a good date picker in React. Pickaday is beautiful and it just plain works out of the box. So my DateRangeInput component is now using Pickaday for the start and end date input and I hooked it up like so:

      componentDidMount: function() {
        new Pikaday({
          field: React.findDOMNode(this.refs.start),
          format: 'MM/DD/YYYY',
          onSelect: this.onChangeStart
        });
    
        new Pikaday({
          field: React.findDOMNode(this.refs.end),
          format: 'MM/DD/YYYY',
          onSelect: this.onChangeEnd
        });
      },
    

    The DOM needs to be rendered for Pikaday to hook up to it and the componentDidMount hook lets you hook into that exact event.

    componentWillMount is useful when you want to do something programatically right before the component mounts. An example in one codebase I'm working on is a mixin that has a bunch of code that would otherwise be duplicated in a number of different menu components. componentWillMount is used to set the state of one specific shared attribute. Another way componentWillMount could be used is to set a behaviour of the component branching by prop(s):

      componentWillMount() {
        let mode;
        if (this.props.age > 70) {
          mode = 'old';
        } else if (this.props.age < 18) {
          mode = 'young';
        } else {
          mode = 'middle';
        }
        this.setState({ mode });
      }
    

提交回复
热议问题