2016-07-15 3 views
2

은 다음과 같습니다나는 나의 행동을 파견 할 수없는 소품 (돌아 오는 반응) 나는 <code>connect</code> 사용 방법은 다음과

function mapStateToProps(state, ownProps) { 
    return { 
    // we'll call this in our component -> this.props.listingData 
    listingData: state.locations.listingData, 

    //we'll call this in out component -> this.props.formState 
    formState: state.formStates.formState 
    }; 
} 

function mapDispatchToProps(dispatch) { 
    return { 
    actions: bindActionCreators(locationActions, formStateActions, dispatch) 
    }; 
} 

export default connect(mapStateToProps, mapDispatchToProps)(homePage); 

내가 사용하는 버튼입니다 : 여기

<div onClick={this.stateToEntry} className="addButton">Add</div> 

기능입니다 실행하려면

stateToEntry() { 
     this.props.actions.stateToEntry();//formStateActions.stateToEntry();//dispatch an action to update the Redux store state 
     browserHistory.push('/location');//then redirect to the add/edit/delete page using browserHistory 
    } 

this.props.actions.stateToEntry()은 기능이 아닙니다. 여기 실제로 무슨 일이 일어나고 있습니까 & 어떻게이 문제를 해결할 수 있습니까?

EDIT : 환언 enter image description here

의 바로 주변의 {} 추가 : 여기

로그 데이터이다. 내가 {formStateActions} 혼자 시도하고 작동하지 않았지만 formStateActions 일했습니다. @ LazarevAlexandr의 내용은

, 여기 formStateActions 내 actioncreator입니다 :

export function stateToEntry() { 
    return { type: types.STATE_TO_ENTRY, formState: 'entry-mode'}; 
} 

export function stateToEdit() { 
    return { type: types.STATE_TO_EDIT, formState: 'edit-mode'}; 
} 

export function stateToDelete() { 
    return { type: types.STATE_TO_DELETE, formState: 'delete-mode'}; 
} 

내 locationActions의 actioncreator 그래서 오히려 완전히 여기에 게시하지 않는 게 좋을 매우 깁니다. 그것들은 모두 함수이며, 일부는 액션을 반환하는 액션 크리에이터이고, 일부는 API에서 데이터리스트를 가져 오는 함수를 반환합니다. 여러 작업을 전달하려는, 그래서 만약

+0

이 쇼는 locationActions'와'formStateActions''수입하는 코드는 당신이 그 (것)들에게 –

+0

를 정의하십시오 어떻게 @LazarevAlexandr 그의 답변에서 @krvital에 언급 된 바와 같이, 문제는'bindActionCreators'에 있습니다. 왜냐하면 저는 2가되어야 할 때 3 개의 매개 변수를 사용하려고했기 때문입니다. (글쎄, 나는 여전히 문서를 확인해야한다). 문제는 지금 당장'bindActionCreators ({action1}, dispatch)'가 작동하지 않는다는 것입니다. 그러나 대괄호가없는'bindActionCreators (action1, dispatch)'는 작동하지만 이것은 1 action 또는 1 매개 변수를 사용하는 경우입니다. 여러 동작을 사용하고 싶습니다. –

+0

나는 그것을 이해했으며, 당신의'actionCreators'에 뭔가 잘못되었다고 가정했다. –

답변

2

bindActionsCreators는 설정이 시도, 두 개의 매개 변수를 가져옵니다

function mapDispatchToProps(dispatch) { 
    const actions = Object.assign({}, locationActions, formStateActions); 
    return { 
    actions: bindActionCreators(actions, dispatch) 
    }; 
} 
+0

'bindActionCreators ({... locationActions, ... formStateActions}, dispatch)'를 사용할 때 구문 분석 오류가 발생하지만'bindActionCreators ({locationActions, formStateActions}, dispatch) '를 사용할 때 구문 분석 문제가 수정됩니다. 여전히 동일한 오류가 발생합니다 ->'this.props.actions.stateToEntry()'는 함수가 아닙니다. –

+0

객체 휴식 확산을 위해'babel-preset-stage2'가 필요합니다. 어쨌든 이것을 시도 할 수 있습니다. bindActionCreators (Object .assign ({}, locationActions, formStateActions), dispatch)' –

+0

'Object.assign()'을 사용하여 여러분의 제안을 시도했으나 작동하지 않습니다. 'bindActionCreators (formStateActions, dispatch)'를 사용하면 작동합니다. 다른 제안? –