【发布时间】:2016-08-15 12:18:37
【问题描述】:
我已经开始学习 React / Redux 并且偶然发现了一些可能是一个非常基本的问题。下面是我的应用程序中的 sn-ps,为简单起见删除了一些代码。
我的状态由一组默认为空的站点描述。稍后,reducer 将有LOAD_SITES 操作以在用户分页到不同页面时加载一组不同的站点,但现在它什么也没做。 React 首先渲染PublishedSitesPage,然后渲染PublishedSitesBox,然后循环数据并渲染各个站点。
我想做的是让它使用默认的空数组渲染所有内容,同时启动“从服务器加载站点”承诺,一旦解决,就调度 LOAD_SITES 操作。拨打这个电话的最佳方式是什么?我在考虑PublishedSitesBox 或componentDidMount 的构造函数。但不确定这是否可行——我担心我会以这种方式创建一个无限循环,并不断重新渲染。我想我可以通过沿“haveRequestedInitialData”行设置一些其他状态参数来以某种方式防止这种无休止的循环。我的另一个想法是在完成ReactDOM.render() 之后立即做出这个承诺。最好和最干净的方法是什么?
export default function sites(state = [], action) {
switch (action.type) {
default:
return state;
}
}
...
const publishedSitesPageReducer = combineReducers({
sites
});
ReactDOM.render(
<Provider store={createStore(publishedSitesPageReducer)}>
<PublishedSitesPage />
</Provider>,
this.$view.find('.js-published-sites-result-target')[0]
);
...
export default function PublishedSitesPage() {
return (
<PublishedSitesBox/>
);
}
...
function mapStateToProps(state) {
return { sites: state.sites };
}
const PublishedSitesBox = connect(mapStateToProps)(({sites}) => {
// render sites
});
【问题讨论】:
标签: javascript reactjs redux react-redux