react-redux-router需要多个Store吗?

初入Redux,一个问题需有经验的朋友指点下,先了解redux官网中的两个观点:

1、Redux 应用只有一个单一的 store。

http://cn.redux.js.org/docs/b...

Redux 应用只有一个单一的 store。当需要拆分数据处理逻辑时,你应该使用 reducer 组合 而不是创建多个 store。

2、子应用隔离

http://cn.redux.js.org/docs/r...

考虑一下这样的场景:有一个大应用(对应 <BigApp> 组件)包含了很多小的“子应用”(对应 SubApp 组件):

import React, { Component } from 'react'
import SubApp from './subapp'

class BigApp extends Component {
  render() {
    return (
      <div>
        <SubApp />
        <SubApp />
        <SubApp />
      </div>
    )
  }
}

这些 <SubApp> 是完全独立的。它们并不会共享数据或 action,也互不可见且不需要通信。

为了使用 React API 来隐藏 Redux 的痕迹,在组件的构造方法里初始化 store 并把它包到一个特殊的组件中:

import React, { Component } from 'react'
import { Provider } from 'react-redux'
import reducer from './reducers'
import App from './App'

class SubApp extends Component {
  constructor(props) {
    super(props)
    this.store = createStore(reducer)
  }

  render() {
    return (
      <Provider store={this.store}>
        <App />
      </Provider>
    )
  }
}

如果应用间需要共享数据,不 推荐使用这个模式。 但是,如果大应用完全不需要访问子应用内部数据的话非常有用, 同时我们还想把 Redux 作为一种内部细节实现方式对外部隐藏。 每个组件实例都有它自己的 store,所以它们彼此是不可见的。

问题:

当我们进行SPA应用开发时,多个页面之间并不需要共享状态(仅仅只有用户登录信息,通过Props可以解决),如果按照一般的Redux设计,State树可能是这样:

{
  pageA: ...,
  pageB: ...,
  ...
}

这样多个页面上共用一个Store和一个State树,是否最佳、合适?
这样会在mapStateToProps中写一堆这样的代码:

// pageA的container中
function mapStateToProps(state){
  return state.pageA;
}

// pageB的container中
function mapStateToProps(state){
  return state.pageB;
}

阅读 6.8k
2 个回答

redux有一定的使用场景的,你这种情况,多个页面之间不需要共享状态,那还用redux做什么,反而增加了应用的复杂度。

一个state树,可以有多个分支。一个分支对应一个页面或者多个页面,这一点都不矛盾。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题