Я исследовал сеть и различные источники;похоже, никто не относится к моему вопросу.Наиболее близким может быть следующее (у которого нет ответа): вызов функции React + Redux
Итак: я пытаюсь передать аргументы одному из моих полей создателя действия,функция с именем update, которая будет определять, изменилось ли значение в размытой строке, и если это так, то вызовет мой API для обновления.Аргументы, которые я хочу передать, - это событие (которое содержит нужную мне строку как target.ParentElement) и целое число, представляющее индекс строки в свойстве projects моего состояния.
Actionсоздатель в моем магазине приставок:
export const actionCreators = {
update: (e: React.FocusEvent<HTMLInputElement> | undefined, i: number): AppThunkAction<KnownAction> => (dispatch, getState) => {
let test = event;
// Will put logic and api call in here and dispatch the proper action type
}
}
И пытаюсь назвать его так:
// Inside a function rendering each row in my form
...
<input key={project.number} name={name} className='trackerCell' onBlur={(event) => { this.props.update(event, i) }} defaultValue={project.number}/>
Где i - значение индекса, переданное в функцию рендеринга.
Это все компиляции находят, однако, когда я выполняю и попадаю в функцию update , e и i оба не определены; событие определено, однако, и выглядит так, как я ожидал бы e .
FWIW, формат, который я пытаюсь здесь использовать, работает в другом месте в моем приложении:
requestProjects: (programNumber: number, programString: string): AppThunkAction<KnownAction> => (dispatch, getState) => {
при вызове componentWillUpdate () правильно получает число и строку, которые я могу использовать в своей логике.
Бонус: во всех моих функциях создателя действий, сконструированных таким образом, Аргументы содержат 3 объекта: dispatch , getState и undefined .Почему не отображаются аргументы в подписи вызова?Думаю ли я об этих аргументах по-другому?
И да, я знаю, что могу просто прикрепить значение индекса к атрибуту в моем входе, и это появится в объекте event , но это кажетсяхак, и я действительно хочу понять, что здесь происходит.
Спасибо
ОБНОВЛЕНИЕ
В ответ на комментарий Уилла Кейна: переменная индекса, i, передается в функцию рендеринга строки от ее родителя следующим образом:
private renderProjectRow(project: ProjectTrackerState.Project, i: number) {
let cells: JSX.Element[] = [];
let someKey = project.number + '_started', name = project.number + '_number';
cells.push(<input key={project.number} name={name} className='trackerCell' onBlur={ this._handleBlur.bind(this) } defaultValue={project.number}/>);
// Rendering continues down here
Это допустимый тип числа до точки события (я могу сказать, как я отлаживаю в браузере).
Переменная события в функции обновления происходит от .. Я не знаю где?Это загадка, которую я бы хотел разгадать.Даже если это не определенный параметр для функции обновления, когда я вхожу в метод update , в отладчике определяется событие как таковое:
Event {isTrusted: false, type: "react-blur", target: react, currentTarget: react, eventPhase: 2, …}
Очевидно, что это событие, котороесработал обработчик, но то, как он достигает функции update , мне не подходит.