从URL参数中有条件地填充React容器

时间:2017-06-08 23:33:41

标签: reactjs react-router react-redux

我不确切知道如何解决这个问题,而我的研究正在发现相互矛盾/混乱的信息。我使用react,redux,saga和react-router。

我基本上有一个主/细节场景。我向用户显示一个故事列表,当他们点击一个故事时,它会加载一个详细信息组件,其中包含从状态中读取的详细信息。但是,如果用户知道详细ID,我希望用户能够深入链接到详细信息页面。 http://localhost:3000/story/1496620859347

我正在调度在组件构造函数中触发的操作,但映射到组件props的状态永远不会更改。我究竟做错了什么? (我已经添加了一些组件代码,但我不确定它是否相关。)

import React, { Component } from 'react';
import { connect } from 'react-redux';
import './FullStory.css';
import he from 'he';
import { downloadSelectedStoryByID } from '../store/actions/selected_story';

const mapStateToProps = (state) =>  {  
  return {
    story: state.selected_story
  }
}

const mapDispatchToProps = dispatch => {  
  return {
    getStoryByID(id) {
      dispatch(downloadSelectedStoryByID(id));
    }
  } 
} 

class FullStory extends Component {
  constructor(props) {
    super(props)

    if (props.story.id == undefined) {
        this.props.getStoryByID(props.match.params.id);
    }

  }
  render() {
    return ( 

 )

减速

从' ../../常数';

导入c
export const selected_story = (state={}, action) => {
  switch(action.type) {
        case c.DOWNLOAD_STORY_BY_ID_SUCCEEDED:        
          return action.payload;
        case c.SET_SELECTED_STORY:
          return action.payload;
    default:
      return state;
  }
}

我放入了减速机。

0 个答案:

没有答案