В моем компоненте DebtType без сохранения состояния я запускаю 'handleChangeEventDebtType' в событии onChange:
const DebtType = (options, handleChangeEventDebtType) => {
console.info(options);
return (
<select onChange = {handleChangeEventDebtType}>
{options.options.map(option => {
return <option>{option.label}</option>;
})}
</select>
);
};
export default DebtType;
Этот компонент DebtType вызывается в MyContainer:
import React, { Component } from "react";
import DebtType from "./DebtType";
import mockOptions from "./mockData.json";
import ClearDebtType from "./ClearDebt";
import { reduxForm } from "redux-form";
import { connect } from "react-redux";
class MyContainer extends Component {
handleChangeEventDebtType= () => {
//save selected debttype to store
console.info("handleChangeEventDebtType");
}
render() {
return (
<div>
<DebtType
options = {mockOptions.DEBT_TYPE}
handleChangeEventDebtType = {this.handledChangeDebtType}
/>
<ClearDebtType options = {mockOptions.CLEARDEBT_TYPE} />
</div>
);
}
}
const mapStateToProps = state => ({
//selectedDebtType:
});
MyContainer = connect(
mapStateToProps,
undefined
)(MyContainer);
export default reduxForm({
form: "simple" // a unique identifier for this form
})(MyContainer);
//export default ;
Как я могу вызвать событие «handleChangeEventDebtType»? В настоящее время не стреляет.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


обновлена функция handleChangeEventDebtType, незначительная опечатка в имени функции handleChangeEventDebtType
import React, { Component } from "react";
import DebtType from "./DebtType";
import mockOptions from "./mockData.json";
import ClearDebtType from "./ClearDebt";
import { reduxForm } from "redux-form";
import { connect } from "react-redux";
class MyContainer extends Component {
handleChangeEventDebtType = () => {
//save selected debttype to store
console.info("handleChangeEventDebtType");
};
render() {
return (
<div>
<DebtType
options = {mockOptions.DEBT_TYPE}
handleChangeEventDebtType = {() => {
this.handleChangeEventDebtType();
}}
/>
<ClearDebtType options = {mockOptions.CLEARDEBT_TYPE} />
</div>
);
}
}
const mapStateToProps = state => ({
//selectedDebtType:
});
MyContainer = connect(
mapStateToProps,
undefined
)(MyContainer);
export default reduxForm({
form: "simple" // a unique identifier for this form
})(MyContainer);
//export default ;
деструктурирован реквизит компонента
import React from "react";
const DebtType = ({options, handleChangeEventDebtType}) => {
console.info(options);
return (
<select onChange = {handleChangeEventDebtType}>
{options.map(option => {
return <option key = {option.label}>{option.label}</option>;
})}
</select>
);
};
export default DebtType;
Все, что вы забыли сделать, это добавить деструктурированные реквизиты к функциональному компоненту Тип долга , в вашем примере дескрипторChangeDebtType не воспринимался как функция, поэтому он не срабатывал. Также не забудьте добавить ключ при циклическом обходе массива.
Ссылка на фиксированные кодыandbox : https://codesandbox.io/s/kkxz980qw5
import React from "react";
const DebtType = ({ options, handleChangeEventDebtType }) => {
console.info(options);
return (
<select onChange = {handleChangeEventDebtType}>
{options.map((option, index) => {
return <option key = {index}>{option.label}</option>;
})}
</select>
);
};
export default DebtType;
Определение функции стрелки в handleChangeEventDebtType будет воссоздавать одну и ту же функцию стрелки при каждом рендеринге. Скорее определите функцию стрелки снаружи, чтобы она была определена только один раз.