我正在尝试使用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动作的例子,但不是相反。
答案 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);
当我有机会实际执行此操作时,我会使用最终代码更新此内容。