假设我有一个像Facebook这样的索引页面,上面有朋友列表。说我想预先取你的前十个朋友'配置文件,以便当您路由到其中一个配置文件时,应用程序不需要提出请求。
但是我想要将.x秒的转换设置为个人资料页面的动画,以便在未加载配置文件的情况下,您不会看到加载屏幕(希望实际请求会以低于动画时间的方式返回。)
让我头脑发热的棘手部分是:我什么时候改变路线并使用实际轮廓重新渲染页面(而不是过渡到它的动画)。
路由器似乎应该只关注获取必要的数据,等待,然后最终渲染实际的配置文件。
似乎行动创造者必须弄清楚何时改变路线。并且由于似乎只有在 BOTH 过渡 AND API调用完成之后才能更改路径,我能想到的唯一方法就是使用一个动作创建器看起来像:
function visit_profile(profile_id) {
return (dispatch) => {
download_promise = dispatch(download_profile(profile_id));
animation_promise = dispatch(transition_to_profile(profile_id));
return Promise.all([download_promise, animation_promise]).then(
(profile) => dispatch(view_profile(profile_id)),
(error) => dispatch(404_profile())
);
};
}
// Downloads a profile and puts it into store.
function download_profile() { ... }
// Kicks off the animations (with a promise that is resolved when the animation is finished).
function transition_to_profile() { ... }
// Changes the URL, thereby re-rendering the page with the actual profile.
function view_profile() { ... }
但这对我来说似乎过于复杂。每当我在redux中做正确的事时,我知道,因为它感觉正确。这不是。似乎有些事情是错的。但我无法通过其他方式去做。但是,在查看了很多例子之后,我才发现任何让我走上正确道路的事情。
对此有没有既定的约定?
谢谢!