Я пытаюсь сохранить 3 разных значения состояния (категория, подкатегория, квадратные футы) одновременно в одном состоянии и сохранить их вместе в базе данных. У меня есть 3 разных функции для 3 разных состояний. Прямо сейчас я сделал 3 запроса axios для 3 разных функции:
this.state = {
apiUrl: config.publicRuntimeConfig.publicRuntimeConfigValue.apiUrl,
categoryName:'',
subCategoryName:'',
squareFeet:'',
};
saveValue = (e) => {
console.info('savecategory', e.target.innerHTML);
this.setState({
category: e.target.innerHTML
}, this.makingAxiosRequest);
};
makingAxiosRequest = () => {
axios.post( this.state.apiUrl+'/api/v1/LeadSurvey/save', {
'categoryName':this.state.category,
}, {})
};
savedValue = (e) => {
// console.info('savecategory', e.target.innerHTML);
this.setState({
subCategory: e.target.innerHTML
}, this.makeAxiosRequest);
};
makeAxiosRequest = () => {
axios.post( this.state.apiUrl+'/api/v1/LeadSurvey/save', {
'subCategoryName':this.state.subCategory,
}, {})
};
handleChangeEvent = value => {
this.setState({
value: value
})
};
savingValue = () => {
console.info('saveValue ...', this.state);
axios.post( this.state.apiUrl+'/api/v1/LeadSurvey/save', {
'squareFeet':this.state.value,
}
Но я не могу передать все это значение в последнем состоянии и сохранить его сразу.





Проверьте, передаете ли вы правильные имена состояний. Попробуйте что-нибудь вроде этого
axios.post(this.state.apiUrl+'/api/v1/LeadSurvey/save', {'categoryName':this.state.categoryName,subCategoryName:this.state.subCategoryName,'squareFeet':this.state.squareFeet});
передать все данные о состоянии сразу вместо 3 разных вызовов. Если эти 3 значения взяты из полей ввода, вы можете связать значения с таким состоянием.
onChange=(e,{name,value})=>{
this.setState({[name]:value});
}
<input name = "categoryName" onChange = {this.onChange}/>
Предоставьте свойство name вашему вводу или тому, что вы используете, затем вызовите onChange(e) свойство передачи события и получите свойства имя, значение из события и установите его в состояние, подобное следующему:
class Thingy extends React.Component {
constructor(props) {
super(props)
this.state = {};
}
onChange(e) {
this.setState({ [e.target.name]: e.target.value });
}
render() {
const {title} = this.props;
return (
<div>
name
<input name='name' onChange = {(e) => this.onChange(e)}/>
age
<input name='age' onChange = {(e) => this.onChange(e)}/>
</div>
);
}
}
// Render it
ReactDOM.render(
<Thingy />,
document.body
);<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>