Передача функции внутренним потомкам не работает в React - PullRequest
0 голосов
/ 10 июля 2020

У меня есть DeleteButton, где я передаю метод onSubmit:

  <DeleteButton
    size="tiny"
    key="delete"
    initialValues={this.props.initialValues}
    onSubmit={this.props.dispatchUpdateVariantNote}
    confirmDialog={this.props.deleteConfirm}
  />

onSubmit функция dispatchUpdateVariantNote определена в mapDispatchToProps и выглядит следующим образом:

const mapDispatchToProps = (dispatch, ownProps) => ({
  dispatchUpdateVariantNote: (updates) => {
    dispatch(updateVariantNote({ ...updates, variant: ownProps.variant, familyGuid: ownProps.familyGuid })) 
  },
})

Внутри DeleteButton У меня есть еще одна кнопка `DispatchRequestButton:

const DeleteButton = React.memo(({ initialValues, onSubmit, buttonText, size, ...props }) =>
  <DispatchRequestButton
    onSubmit={() => onSubmit({ ...initialValues, delete: true })} 
    buttonContent={buttonText}
    icon="trash"
    labelPosition={buttonText && 'right'}
    size={size || 'small'}
    {...props}
  />,
)

, которая получает функцию onSubmit: onSubmit={() => onSubmit({ ...initialValues, delete: true })}. Я убедился, что все это происходит при первой загрузке страницы: правильные функции присутствуют во всех этих компонентах. Когда внутри DispatchRequestButton я вызываю onSubmit(), результат будет undefined, а не dispatchUpdateVariantNote, как я ожидал. Почему это могло произойти?

Я использую следующие версии:

"react": "^16.12.0",
"redux": "^3.7.2",

и Chrome браузер. Приложение запускается с локального сервера node.js.

...