- Мне нужно сделать вызов 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();
}
}
}