Как вызвать функцию в компоненте из отдельного компонента?

#reactjs #redux

#reactjs #сокращение

Вопрос:

У меня есть форма ввода и кнопка «Отправить» в двух отдельных компонентах A и B. Как бы я передал входное значение из компонента A в хранилище Redux при нажатии кнопки отправки в компоненте B?

Мои мысли: — У меня была бы функция getFormInput в компоненте A, которая передавала бы входные данные в хранилище (через отправку, которая была сопоставлена с реквизитами компонента A). В чем я не уверен, так это в том, как вызвать getFormInput из другого компонента.

Комментарии:

1. разве у них нет родительского компонента? 🙂

2. Да, это родственные компоненты. Не могли бы вы поделиться своими соображениями? Я немного новичок в react / redux, поэтому мне может понадобиться дополнительное продвижение, чтобы понять, к чему вы клоните 🙂

3. пожалуйста, проверьте: lifting state up

Ответ №1:

Мои мысли:

Поскольку вы говорите о redux store, я предлагаю вам обновлять redux store при каждом изменении текста. Тем не менее, если вы ввели ‘a’ в текстовое поле, отправьте действие и обновите хранилище redux. Таким образом, у вас будут согласованные данные по всему.

И когда вы нажимаете на свою кнопку, просто вызывайте метод (может быть, другое действие), и там вы можете использовать getState().textBoxValuewhatever напрямую для доступа к тому, что вы ввели в свое текстовое поле. (это было бы возможно, поскольку вы обновляете свое хранилище redux при каждом textchange)

Комментарии:

1. Это, безусловно, упростило бы ситуацию. Решение, которое обновляет хранилище только один раз при нажатии кнопки отправки, было бы идеальным, но это сработало бы, так что спасибо.

2. Я выбрал это, потому что вам не нужно отправлять какие-либо данные в методах onclick. Вы можете просто полностью использовать хранилище redux и отправлять туда все, что хотите, методом click. Если нет, вы можете продолжить с отменой параметра stateup, как предложено в комментариях.