2016-09-18 3 views
0

나는 3 개의 감속기가있는 react-redux 앱을 가지고 있습니다. clientPrivileges, userFilteruserData이 내 상점에서 작동합니다.다른 주에서 가져온 데이터에 따라 달라질 수 있습니다.

테이블 구성 요소는 각 사용자의 데이터를 표시하는 데 사용되며 드롭 다운 구성 요소는 특정 사용자에 대해이 테이블을 필터링하는 데 사용됩니다. 특정 사용자에 대해 드롭 다운이 선택되면 데이터를 검색하기 위해 백엔드를 호출해야합니다. 이것은이와 관련된 작업입니다 :

selectUser(userId, dispatch) { 
    api.getUserData(userId, accessTypeId, (data) => { 
     dispatch(userActions.update(data)); 
    }); 

    return{ 
     type: selectUser, 
     userId 
    } 
} 

당신은 내가 userId뿐만 아니라 백엔드로 전송 될 필요가 accessTypeId라는 인자를 가지고 있음을 알 수 그러나

. 이 값은 앱에 로그인 할 때 clientPrivileges 감속기를 사용하여 상점에서 설정되었습니다.

mapStateToProps에 드롭 다운 구성 요소의 보조로 accessTypeId을 설정하는 것 외에 다른 방법은 없습니다. 그리고 구성 요소 자체의 :

this.props.users.map(u => { 

    function onClick() 
    { 
     selectEndUserGroup(u.id, this.props.accessTypeId); 
    } 
    return <div id={"filter_group_"+u.id} key={u.id} onClick={onClick}>{name}</div> 

하지만 지금은 accessTypeId 속성 내 일반적인 드롭 다운 구성 요소를 파괴했습니다. 어떻게해야합니까?

답변

1

제대로 이해했다면 Redux 상태에 저장된 값에 액세스 할 수 있습니까?

Redux-Thunk가이 문제를 잘 처리합니다. 코드는 다음과 같습니다.

selectUser(userId) { 
    return function(dispatch, getState){ 

     var accessTypeId = getState().[PATH TO REDUX STATE ELEMENT] 
     api.getUserData(userId, accessTypeId, (data) => { 
      dispatch(userActions.update(data)); 
     }); 

     dispatch({ 
      type: selectUser, 
      userId 
     }) 
    } 
} 
관련 문제