如何将组件(文件)连接到redux存储

时间:2017-06-19 14:29:33

标签: reactjs react-native redux react-router react-redux

我需要创建component/file/class无论如何并将其连接到redux store 我不需要渲染这个组件 它只是一个帮助组件,可以包含从商店返回值的方法 我试图创建一个文件:

export function getKeyFromReduxStore(key:string) {...

但这只是一个导出功能的文件,我无法(或者不知道)如何将其连接到redux商店。
我的所有组件都与商店连接:

<RouterWithRedux>
          <Scene key="root">...

但正如我所说,这不是一个场景,它只是帮助组件,我想通过整个应用程序重复使用。
如何制作这样的组件并将其连接到redux?

1 个答案:

答案 0 :(得分:2)

Redux商店有一个名为getState的方法,它获取商店的状态。您可以在需要redux store的文件中导入您创建的商店。

// in the file where you created your store
import { createStore } from 'redux';

export const myStore = createStore(
  // ... some middleware or reducer etc
)

// in your component/file/class
import { myStore } from '../path/to/store'

export function getKeyFromReduxStore(key:string) {
  return (myStore.getState())[key];
}

或者,您可以将商店传递给getKeyFromReduxStore函数,并在存储可用的react组件中调用它。例如,在mapStateToProps函数中:

// component/file/class
export function getKeyFromReduxStore(store, key) {
  return store[key];
}


// react component with access to store
import { getKeyFromReduxStore } from '../path/to/file';

class MyKlass extends Component {
  // ... your logic
  render() {
    const val = this.props.getKey(someVal);
  }
}

const mapStateToProps = (state) => ({
  getKey: (key) => getKeyFromReduxStore(store, key),
})

export default connect(mapStateToProps)(MyKlass);