React Redux Thunk Pass This.Props Методы в действии Создатель - PullRequest
1 голос
/ 08 октября 2019

Я использую реагировать с реагировать-stepzilla с Redux, Redux-thunk проблема в том, что я хочу использовать метод jumpToState (n) внутри создателя действия. но я не могу получить доступ к этому методу внутри файла создателя действий приставки.

Файл действия * Метод 1003 *

export const checkUser = (username) => {
    return (dispatch,getState)=>{
      wApi({user:username}).then(response => {
           dispatch({
              type: ActionTypes.CHECK_USER_NAME,
              payload:response
           })
           e.jumpToStep(1);//Here it is Stepzilla Method 
        }).catch(err => {})

      }
  }

getState (), предоставляющий только значение состояния, которое я объявил в редукторе. console.log (getState)

userdetail:{
       username:"USER1001"
       usertype:"SUPER"
       isactive:"YES"
    }

Файл редуктора * Код файла

const defaultState={
    userdetail:{
       username:""
       usertype:""
       isactive:""
    }
}
const reducer =(state=defaultState,action)=>{
    switch (action.type) {
        case ActionTypes.CHECK_USER_NAME :
          {
            return {
              ...state,
              userdetail:action.payload,
            }
          }
        default:
          return state
      }
}
export default reducer;

CheckUserName.js

componentWillMount() {
        this.props.checkUser("USER1001")
        //console.log(this.props)
        //{Here in console Output i can see "jumpToState"  method in this.props}
        //this.props.jumpToStep(1);
      }

Я нахожу решение, передавая весь this.propsк действию метода создателя.

this.props.checkUser("USER1001",this.props)

Я хочу спросить, есть ли альтернативный метод для достижения этой цели. я новичок, чтобы реагировать

1 Ответ

0 голосов
/ 08 октября 2019

Из документации о response-stepzilla:

stepzilla внедряет служебный метод под названием jumpToStep в качестве опоры во все ваши компоненты шага реакции

Как естьНормальная функция в ваших реквизитах, вы можете передать ее создателю действия в качестве аргумента и использовать ее там. Проходить целое this.props не обязательно.

this.props.checkUser("USER1001", this.props.jumpToStep)
export const checkUser = (username, jumpToStep) => {
    return (dispatch,getState)=>{
      wApi({user:username}).then(response => {
           dispatch({
              type: ActionTypes.CHECK_USER_NAME,
              payload:response
           })
           jumpToStep(1);//Here it is Stepzilla Method 
        }).catch(err => {})

      }
  }
...