Передача значения состояния mapDispatchToProps в React Redux - PullRequest
0 голосов
/ 30 сентября 2019

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я только начал изучать React и Redux, так что, возможно, это вопрос нуба, но, пожалуйста, потерпите меня.

Итак, воткраткая форма моей проблемы:

import { connect } from 'react-redux'
import someComponent from 'some_file_that_exports_component_as_default_export' 

const mapStateToProps = state => ({ state })

const mapDispatchToProps = (dispatch, ownProps) => ({
    fetchComplianceLink() {
     dispatch({
      type: 'ACTION_TYPE',
      payload: {
        someKey: <XYZ>, // --> this value (XYZ) I want from my state
      },
     })
    },
})

export default connect(
  mapStateToProps,
  mapDispatchToProps,
)(someComponent)

Я тоже пробовал с mergeProps, но не добился успеха. Может быть, мой подход неверен, или mergeProps - не та функция, которая может это исправить. Пожалуйста, пролите немного света. Как я могу получить значение XYZ из состояние

Спасибо в Advance & Happy Coding:)

1 Ответ

2 голосов
/ 30 сентября 2019

Вы не можете передать состояние хранилища (динамическое состояние) в mapDispatchToProps, он просто возвращает объект, имеющий функции, которые вы определяете, и помогает вам how to dispatch и what dispatch to do. Вам нужно сделать:

const mapStateToProps = state => ({
    key: state... // get value of store here to pass into Component
})

const mapDispatchToProps = dispatch => ({
    fetchComplianceLink(value) {
        dispatch({
           type: 'ACTION_TYPE',
           payload: {
               // someKey: <XYZ>, // --> this value (XYZ) I want from my state
               someKey: value
           },
        })
    },
})

Использовать fetchComplianceLink в Component:

ComponentDidMount() { // or ComponentWillMount
    const { key, fetchComplianceLink } = this.props;
    // Call fetchComplianceLink with key got from store
    fetchComplianceLink(key);
}
render () {
    return (

    )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...