2017-09-15 11 views
1

私はmapStateToPropsの内で三元声明を使用しようとしていますが、状態を更新しているようではなく、実行し続けていますmapStateToProps must return a plain object. Instead received undefined.この構文は間違っていますか?mapStateToPropsはプレーンなオブジェクトを返す必要があります。代わりに受信しません

const mapStateToProps = state => { 
console.log("current state is:" + JSON.stringify(state.model)); 
state.model.selectedPerson ? 
    { 
     selectedCourse: state.model.selectedPerson.selectedCourse, 
     startDate: state.model.selectedPerson.startDate, 
     courseType: state.model.selectedPerson.courseType, 
    } : 
    { 
     selectedCourse: [], 
     startDate: '', 
     courseType: '', 
    }; 
}; 

const reducers = Object.assign({}, { model: courseReducers }); 
export { reducers }; 

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

私はカスタムモーダル内でフォームを使用しようとしています。上記のコンテナは2つの他の親コンテナに含まれています。私はredux形式を使ってまだ調べていません。

答えて

1

の方法mapStateToPropsオブジェクトを返す必要があります。これに変更する

const mapStateToProps = state => { 
console.log("current state is:" + JSON.stringify(state.model)); 
return state.model.selectedPerson ? 
    { 
     selectedCourse: state.model.selectedPerson.selectedCourse, 
     startDate: state.model.selectedPerson.startDate, 
     courseType: state.model.selectedPerson.courseType, 
    } : 
    { 
     selectedCourse: [], 
     startDate: '', 
     courseType: '', 
    }; 
}; 
1

もう1つの答えは、オブジェクトを返す必要があります。

const mapStateToProps = (state) => { 
    console.log("current state is:" + JSON.stringify(state.model)); 
    const { 
    selectedPerson: { 
     selectedCourse = [], 
     startDate = '', 
     courseType = '' 
    } = {} 
    } = state.model; 

    return { 
    selectedCourse, 
    startDate, 
    courseType 
    }; 
}; 
+0

私は、コンソール上の誤り、それ以上が、状態は更新取得されていないが表示されない:ここでは多分値を抽出し、object destructuringを使用してデフォルトを提供するために、きれいな方法です。私は減速機が発送中に呼び出されているとは思わない。減速機のconsole.logステートメントに入れる方法はありますか? – linuxNoob

関連する問題