нужно сделать вызов API, только если он удовлетворяет условию if - PullRequest
0 голосов
/ 11 апреля 2019
  • Мне нужно сделать вызов API в двух разных файлах.
  • В одном файле я выполняю вызов API внутри componentWillMount. this.props.getBirdsData();
  • , но как в другомфайл Мне нужно сделать вызов, только если он удовлетворяет условию if.
    if (
      hardTerm === 'ball' && terms === 'bat' &&
      swmming < running
    ) {
      this.props.getSportsData();
    }
  • , когда я выполняю вызов внутри условия if, запрос выполняется несколько раз, поэтому я неполучение ответов.
  • в первом файле я получаю данные только в том случае, если я помещаю внутрь componentWillReceiveProps, я не могу получить данные с помощью componentDidMount.
  • В этой ссылке они сообщают, что componentWillReceiveProps будет обновлять состояние синхронно,В файле вы можете сказать, как они работают синхронно componentDidUpdate против варианта использования componentWillReceiveProps в реакции this.setState({ radioButtonValues: radioButtonValues });
  • , предоставив мой соответствующий код ниже.
  • вы можете сказать мне, какисправить это

рабочий файл один

 componentDidMount() {
    this.props.initialize(this.state);
    this.props.getRun();
    console.log("step1 componentDidMount this.props--->", this.props);
    this.props.getBirdsData();
    // console.log(" componentDidMount this.props.getBirdsData()--->", this.props.adminRun);
  }

  componentWillReceiveProps(nextProps) {
    if (this.props.adminRun.length != nextProps.adminRun.length) {
      let adminRuns = nextProps.adminRun.data.filter(val => val.packageType === "Run");
      const radioButtonValues = adminRuns.map(obj => {
        return { label: obj.ownerCode + obj.subPackageDescription, value: obj.ownerCode };
      });
      this.setState({ radioButtonValues: radioButtonValues });
    }
  }

не рабочий файл два

 componentDidMount() {

        this.props.getSportsData();
    }

     renderMoon() {
        const { terms, hardTerm } = this.state;
        const { classes, handleSubmit, handleSkip, handleBack } = this.props;

        let running = moment(new Date());

        if (this.props.form.Page && this.props.form.Page.values) {

            let swmming = moment(this.props.form.Page.values.swmming, "MM/DD/YYYY");

            if (
                hardTerm === 'ball' && terms === 'bat' &&
                swmming < running
            ) {
                // debugger;

                console.log('renderMoon inside if--->');
                this.props.getSportsData();

            }

        }

    }
...