私はオブジェクトの詳細を表示する必要があるコンポーネントがあります。これは、行のクリック時にTableComponentからインスタンス化されます。 オブジェクトIDが渡され:反応中常にnullをプロップ
<ObjectDetails objectID = {id}/>
これは私ObjectDetails成分である:
class ObjectDetails extends Component {
componentWillMount() {
this.props.dispatch(loadObjectDetails(this.props.objectID));
}
render() {
console.log("props------" + JSON.stringify(this.props));
....
}
let select = (state) => ({objectDetails: state.objectDetails});
export default connect(select)(ObjectDetails);
}
loadObjectDetails
がobjectDetailsとストアを移入。私は店が細部を持っていることがわかります。 しかし、render()
では、propsは常にobjectDetailsをnullにしています。
私が間違っていることがわかりません、何か助けてください?
編集: 追加するいくつかの詳細は、お使いのmapStateToProps内部
export function loadObjectDetails(objectID) {
return function (dispatch) {
Rest.get('/rest/objects/' + objectID).end(
(err, res) => {
if(err) {
dispatch({ type: 'FETCH_OBJECT_DETAILS_FAILURE', error: res.body})
} else {
dispatch({ type: 'FETCH_OBJECT_DETAILS_SUCCESS', objectDetails: res.body})
}
}
)
}
}
export default function objectDetailsReducer(state={
objectDetails: null,
error: null,
}, action) {
switch (action.type) {
case "FETCH_OBJECT_DETAILS_SUCCESS": {
return {...state, objectDetails: action.objectDetails, error: null}
}
case "FETCH_OBJECT_DETAILS_FAILURE": {
return {...state, error: action.error }
}
}
return state
}
const middleware = applyMiddleware(promise(), thunk, logger())
export default compose(middleware)(createStore)(combineReducers({ reducer1, reducer2, objectDetailsReducer}))
'export default'ステートメントはクラス定義の中にあります。間違い? –