我可以将Redux用于实时数据吗?

时间:2019-01-05 05:03:41

标签: reactjs redux react-redux redux-thunk

我是ReactJS的新手,正在为需要实时数据的应用程序进行探索。

假设我有“ n”个组件,这些组件必须显示实时数据(1秒更新)。该应用程序应合并所有与“ n”个组件相关的“标签”,并调用网络服务器,该服务器会提供所有“标签”的实时数据(我无法从每个组件进行调用,因为这会带来巨大的负担。所以我必须合并并打个电话)。

有一个组件“ RealTimeDataFetcher”,它具有一个计时器,并每秒调用一次动作“ GETLIVEDATA”。该操作将调用Web服务并返回响应(使用thunk)。 DataReducer返回更新后的状态,所有“ n”个组件都使用MapStateToProps获取实时数据。

动作

export const subscribeForData = tag =>{
  return {type : 'SUBSCRIBE' , payload : tag}
}

export const getLiveData = tag[] =>{
  const response = await makeServiceCall(tag[]);
  dispatch({ type: 'LIVE_DATA', payload: response.data });
}

减速器

export const liveData = (livedata, action){
       // update state for live data
}

export const subscribedTags= (tags, action){
       // update state for subscribed tags
}

RealTimeDataFetcher

class RealTimeDataFetcher extends React.Component{
  componentDidMount(){
    // call subscribeData for fetching livedata for "tags"
  }
}
function mapStateToProps (state){
   return { subscribedTags: state.subscribedTags};
}
connect(mapStateToProps,{...})(RealTimeDataFetcher)

组件

class SomeComponent extends React.Component{
   ComponentDidMount(){
      this.props.subscribeForData("tag");
    }
   ComponentDidUpdate(){
      // I will get the live data here. 

    }
}
function mapStateToProps (state){
   return { liveData: state.liveData};
}
connect(mapStateToProps,{...})(SomeComponent )

此方法有效。但是我不确定这是否是获取实时数据的正确方法。

还有其他可以研究的方法吗?

0 个答案:

没有答案