我是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 )
此方法有效。但是我不确定这是否是获取实时数据的正确方法。
还有其他可以研究的方法吗?