如何从React中的辅助模块访问状态?

时间:2018-04-13 07:10:03

标签: reactjs react-redux

我正在创建一个名为 isMember 的模块。该模块应该能够检查state.current_user.member是否为真。

  1 import { select } from "redux-saga/effects"
  2
  3 export function* isMember() {
  4   const { member } = yield select((state: any) => state.current_user)
  5   console.log("isMember: ", member)
  6   return member
  7 }

我试图在我看来像这样测试它:

import { isMember } from "../utils/isMember"

return (
   { isMember() && <span> is a member </span> }
)

但是这会产生这个错误: enter image description here

1 个答案:

答案 0 :(得分:0)

selectredux-saga的效果对象。它是一种处理redux副作用的工具,应该只用于传奇。

通常,要测试你的模块,你需要将它放在监视一个动作的传奇观察者中:

import { takeEvery } from 'redux-saga'

function* watchTestingAction() {
  yield takeEvery(TESTING_ACTION_TYPE, isMember)
}

并在React组件中调度该操作:

import { connect } from 'react-redux'

...
return (
   <MainContainer withScroll>
     <GjeButton
       title="isMember?"
       onPress={this.props.testingAction} />

...
const mapState = (state) => ({})
const mapDispatch = (dispatch) => ({
  testingAction: () => dispatch({ type: TESTING_ACTION_TYPE })
})
export default connect(mapState, mapDispatch)(YourComponent)

编辑:要获取州数据,不需要redux-saga。您需要的是来自connect的{​​{1}}。

react-redux