如何将React-Router中传递的状态迁移到Redux Store?

时间:2018-03-09 04:11:47

标签: javascript reactjs redux

到目前为止,我一直在使用ReactReact-Router,并且在URL之间传递数据时,我已将状态传递为

this.props.history.push(Routes.transactionEdit, this.state.transaction);  

记录在案here

在Component中,我会将其用作

constructor(props) {
    super(props);
    this.state = {
        userId: props.history.location.state.userId,
        transactionId: props.history.location.state.id,
        createdAt: props.history.location.state.createdAt,
        name: props.history.location.state.name,
        amount: props.history.location.state.amount,
    }
}

但是,我了解到在Redux中管理状态是一个更好的主意,它有助于测试商店与视图的外观分开。我喜欢这个主意,因为我关心可以清洁测试的代码。

我开始重构代码,对于需要数据库数据的许多部分,我能够使用thunk模式迁移代码。但是,在这个状态作为history.push的一部分发送的用例中,我不知道如何将此状态放入Redux商店。

问题
如何将this.props.history.push(Routes.transactionEdit, this.state.transaction);(推送期间)中的状态迁移到Redux商店,以便可以在React组件之外进行管理?

由于

1 个答案:

答案 0 :(得分:0)

您需要设置一个特定的action,专门用于获取组件的状态并将其推送到Redux的商店。当然,您需要让减速器对该动作做出适当的响应。 如果你是Redux的新手,这可能会打开一大堆蠕虫。