1

假设我有一个像 Facebook 这样的索引页面,上面有朋友列表。假设我想预先获取您的前十个朋友的个人资料,这样当您路由到其中一个个人资料时,应用程序就不需要发出请求。

但是假设我想为配置文件页面设置 .x 秒的过渡动画,以便在配置文件未加载的情况下,您不会看到加载屏幕(希望实际请求会在少于动画时间的时间内返回)。

对我来说,棘手的部分是:我什么时候更改路线并使用实际配置文件重新渲染页面(而不是动画过渡到它)。

路由器应该只关心获取必要的数据,等待,然后最终呈现实际的配置文件,这似乎是一成不变的。

看来动作创建者必须弄清楚何时更改路线。而且由于似乎只有在转换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 中做正确的事情时,我都知道,因为感觉就是正确的。这没有。好像真的有什么不对劲。但我看不到任何其他方法可以做到这一点。但是,在浏览了很多例子之后,我只是没有找到任何能让我走上正确道路的东西。

是否有任何既定的约定?

谢谢!

4

0 回答 0