React-Router:基于redux reducer中创建的值的导航

时间:2016-08-09 13:49:38

标签: reactjs redux react-router react-redux

我正在尝试使用React-Router和Redux创建https://rarwe-demo.pagefrontapp.com/bands的React.js版本。

我想在创建新乐队时模仿其他应用的行为。即,导航到新乐队。

该应用的网址为.../bands/<bandid>/songs。我正在将数据存储在一个数组中,<bandid>是数组的索引,我不知道它是什么,直到之后创建它。

[
    {
        id: 0,
        name: 'Pearl Jam',
        songs: [
            ...
        ]
    },
    {
        id: 1,
        name: 'Led Zeppelin',
        songs: [
            ...
        ]
    },
]

我的第一个想法是发出另一个动作。但是根据乐队名称进行“changeUrl”操作似乎是错误的。另外,如果创建操作可能需要一段时间,我将如何以正确的顺序执行此操作?

在Redux中存储“selectedBand”值也感觉不对,因为我必须确保URL和此值是同步的。

我认为有一种“标准”的方式,但我的google-foo让我失望。我已经能够找到很多基于URL转换触发Redux动作的例子,但不是相反。

2 个答案:

答案 0 :(得分:0)

让我们说乐队和输入框列在shutil.make_archive("~/Documents/zipfile", "zip", "~/Documents/", "foldertozip") 组件中。您可以在此组件中编写MenuBar方法。创建新Band时,请确保reducer向componentWillReceiveProps组件发送响应。

现在MenuBar内写了一个条件,即如果创建了一个新的乐队,就会执行。

componentWillReceiveProps

答案 1 :(得分:0)

建议使用Redux-Thunk https://github.com/reactjs/redux/issues/1543#issuecomment-201364298

我还没有尝试过,但是这个内容是这样的:

dispatch(create_action);
get_new_id_from_state();
browserHistory.push(new_id);

当我有机会实际执行此操作时,我会使用最终代码更新此内容。