Вызов действий Redux в режиме реакции - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь передать переменную в действие Redux , но действие получает undefined , что я делаю не так?

index. js - где я вызываю действие

import React from 'react'
import { connect } from 'react-redux'
import * as documentActions from '../../services/redux/actions/document'

function Document(props) {
    return (
        <ul className="list-group group">
            <li className="list-group-item group-item" 
                name = 'group'
                onClick={() => props.toggleDoc(1)}>
                {props.data.name}
            </li> 
        </ul>
    )
}
const mapStateToProps = state => {
    return {
        selectedId: state.selectedId
    }
}
const mapDispatchToProps = dispatch => {
    return {
        toggleDoc: () => dispatch(documentActions.toggleDoc())
    }
}
export default connect(
    mapStateToProps,
    mapDispatchToProps
)(Document)

документ. js - где действие

import * as types from '../types'

export function toggleDoc(id) {
  return {
    type: types.TOGGLE_DOC,
    payload: id
  }
}

reducer

import * as types from '../types'

const initialState = {
  selectedId: null
}

export default function toggleDoc(state = initialState, action) {
  console.log('action')
  console.log(action.payload)
  switch (action.type) {
    case types.TOGGLE_DOC:
      return {
        ...initialState,
        selectedId: action.payload
      }
    default:
      return state
  }
}

Что печатает:
enter image description here

что печатать:

action
1

1 Ответ

2 голосов
/ 19 июня 2020

props.toggleDoc определяется в mapDispatchToProps. Вы определили это следующим образом:

toggleDoc: () => dispatch(documentActions.toggleDoc())

Это определение не принимает никаких аргументов, хотя documentActions.toggleDoc может. Вам нужно изменить определение, чтобы передать этот аргумент:

toggleDoc: (id) => dispatch(documentActions.toggleDoc(id))
...