правильный способ отправить действие в редуксе - PullRequest
0 голосов
/ 21 ноября 2018

Моя цель - отправить действие, чтобы я мог передать свой объект состояния.

import { addUser } from './actions' //action creator

this.state = {
  person: {
   name: '',
   age: 0,
  },
  isLoading: true,
}

// local func ..

addNewUser = () => {
  //dispatches conditionally so the local func..
  this.props.addUser(this.state.person);
}

// dispatch

mapDispatchToProps = dispatch => ({
  addUser: (person) => dispatch(addUser(person)),
})

ошибка, очевидно, на моем mapDispatch (неправильное определение состояния).Как я могу решить это? (Или есть какой-то лучший способ, но должен использовать создателей действий) заранее благодарен.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Я считаю, что проще подключить ваши действия к экспорту и вызвать this.props.addUser, так как он по умолчанию назначает для него диспетчеризацию без необходимости mapDispatchToProps

export default connect(
    mapStateToProps, 
    {action1, action2, addUser})(User)

, тогда вы все равно можете использовать:

addNewUser = () => {
  this.props.addUser(this.state.person);
}

, а затем делать все остальное внутри действия или самого редуктора (в зависимости от ваших предпочтений потока), например:

export const addUser = user => ({
    type: ADD_USER_SUCCESS,
    payload: {user}
})

Это действительно более полезно при выполнении логики из компонентовявляется более масштабируемым и управляемым.Если у вас есть 10 действий, это быстро выходит из-под контроля, и вы начинаете смешивать различные типы логики.

0 голосов
/ 21 ноября 2018

Предполагая, что ваши действия правильные.

const mapDispatchToProps = (dispatch) => {
  return {
    addUser: (person) => {
      dispatch(addUser(person))
    },
  }
}

Я полагаю, что вам не хватает только возврата {} на вашей картеDispatchToProps

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