Я использую response-redux для подключения данных в моем Redux хранилище.Я обнаружил, как соединяться с селекторами (как mapStateToProps
), чтобы данные были доступны в виде реквизитов в компонентах React, когда мне это нужно.
У меня есть компонент кнопки React, и я сделал для него реквизиты.Из других ответов я думаю, что вижу, как задать функцию onClick , чтобы у EventHandler был доступ к этим реквизитам.
Однако я понимаю, что сама по себе кнопка не нуждается в этих реквизитах, и онаэто просто событие onClick , которое нуждается в них.Есть ли способ подключить функцию onClick к хранилищу Redux вместо подключения компонента кнопки?
Я пробовал несколько способов, но я немного теряюсь между классы, функции, HOC, состав и т. д.
Обновление
Немного больше контекста: в любом пользовательском сеансе интересует интересующее меня состояние (география) для этой функции onClickизначально из базы данных, а потом почти никогда не менялось.Действие onClick, которого я хочу достичь, основано на данных географии.Если географические данные действительно изменятся, то почти все в DOM потребуется перерисовать.
Спасибо за ваши комментарии - я изучил больше и сумел создать скелетное приложение в codesandbox под названием TestOnClick .Я думаю, что это может быть один ответ на мой вопрос.
В приложении есть две кнопки
- , одна получает данные из магазина в качестве реквизита и вкладывает в них функцию onClick как@lecstor показал мне - я полагаю, это довольно стандартная штука, но я новичок в React
- , у другого нет такого реквизита, но он вызывает функцию onClick, которая сама использует getState () для получения тех же данных из хранилища
Кажется, что оба могут быть расширены, чтобы делать то, что я хочу, поскольку у них есть все, что им нужно для этого.Если так, я планирую использовать второй подход кнопки, где у самой кнопки нет реквизита.
Насколько я понимаю, использование getState вместо connect означает, что Redux не уведомляет мою функцию о перезапуске.-представляется, если данные в магазине изменяются.Но я не рассматриваю это как проблему, потому что как функция onClick нет ничего, что требует рендеринга, и в любом случае почти весь DOM нужно будет перерисовывать в любом случае.Правильно ли я понял?
Обновление 2 Я пытаюсь использовать подход «Без реквизита» в моем реальном проекте и сталкиваюсь с круговыми зависимостями, поэтому, возможно, это неправильный ответ.Дальнейшее исследование впереди.