Передать параметры в mapDispatchToProps () - PullRequest
0 голосов
/ 03 июня 2018

Я не могу лгать, я немного сбит с толку насчет реакт-редукса.Я думаю, что для многих действий требуются параметры (например, удаление элементов из магазина), но даже если я все еще читаю о том, как таким образом выполнить диспетчеризацию компонента, около 2 часов, я не сталполучить любые ответы.Меня пробовали с this.props.dispatch и с mapDispatchToProps, я всегда получаю сообщение this.props... is not a function.Вот что я пытаюсь сделать:

  const getTheArray = (array) => {
    return {
      type: 'GET_ARRAY',
      array
    }
  }
    
    class Example extends......
    
    componentDidUpdate(){
    //i have a button, and when it clicked, turns the status: 'deleted'
        if (this.state.status === 'deleted'){
            fetch('http://localhost:3001/deleteitem', {
                method: 'post',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({
                    id: this.props.id
                })
            })
            .then(res => res.json())
            .then(data => this.props.deleteFromArray(data))
            .catch(err => console.log(err)) 
        }
    }




function mapStateToProps(state) {
    return {
        array: state.array
    };
}
function mapDispatchToProps(dispatch) {
    return({
        deleteFromArray: (array) => {dispatch(getTheArray(array))}
    })
}
  
export default connect(mapStateToProps, mapDispatchToProps)(Example);

Это не единственное место, где мне нужно отправить с действием, где свойства объекта действия зависят от другого свойства, переданного функции, поэтому я действительно хочуделайте, как лучше передать свойство в действие и отправить его в компонент реагирования.

1 Ответ

0 голосов
/ 03 июня 2018
import { bindActionCreators } from "redux"

function mapDispatchToProps(dispatch) {
    return(bindActionCreators({
        deleteFromArray: (array) => {getTheArray(array)}
    }, dispatch))
}

В ваших dumbComponents просто вызовите, например, this.props.deleteFromArray ([1,2,3,4])

Это должно решить проблему.Вы не связываете с отправкой

...