title: How do I call a Redux Saga action in a `onClick` event?
body: <p>I just started a new project using <a href="https://github.com/infinitered/ignite" rel="nofollow noreferrer">infinitered/ignite</a>.
  I've added my <code>getUserToken</code> function to the <a href="https://github.com/stabenfeldt/ignite/blob/master/ignite/DevScreens/APITestingScreen.js#L15" rel="nofollow noreferrer">APITestScreen</a>
  So I know that the function works as expected, but I'm not able to hook the method up with the <code>onPress</code> function to the button <a href="https://github.com/stabenfeldt/ignite/blob/master/App/Containers/LaunchScreen.js#L34-L37" rel="nofollow noreferrer">I added to the LaunchScreen</a>.</p>
  
  <p>I have imported it to the view, but nothing happens when I click the button. I have added an alert and a console.log, but they are not triggered. What should I do to get the <strong>fetchUserToken</strong> to run when I click the button?</p>
  
  <p>The entire project posted <a href="https://github.com/stabenfeldt/ignite" rel="nofollow noreferrer">posted at Github</a>.</p>
  
  <p><strong>my view</strong></p>
  
  <pre><code> import getUserToken from '../Sagas/AuthSagas.js';
   &lt;RoundedButton text="Fetch token" onPress={ getUserToken }  /&gt;
  </code></pre>
  
  <p><strong>App/Redux/AuthRedux.js</strong></p>
  
  <pre><code>import { createReducer, createActions } from 'reduxsauce'
  import Immutable from 'seamless-immutable'
  
  /* ------------- Types and Action Creators ------------- */
  
  const { Types, Creators } = createActions({
    tokenRequest: ['username'],
    tokenSuccess: ['token'],
    tokenFailure: null
  })
  
  export const AuthTypes = Types
  export default Creators
  
  /* ------------- Initial State ------------- */
  
  export const INITIAL_STATE = Immutable({
    token: null,
    fetching: null,
    error: null,
    username: null
  })
  
  /* ------------- Reducers ------------- */
  
  // request the token for a user
  export const request = (state, { username }) =&gt;
    state.merge({ fetching: true, username, token: null })
  
  // successful token lookup
  export const success = (state, action) =&gt; {
    const { token } = action
    return state.merge({ fetching: false, error: null, token })
  }
  
  // failed to get the token
  export const failure = (state) =&gt;
    state.merge({ fetching: false, error: true, token: null })
  
  /* ------------- Hookup Reducers To Types ------------- */
  
  export const reducer = createReducer(INITIAL_STATE, {
    [Types.TOKEN_REQUEST]: request,
    [Types.TOKEN_SUCCESS]: success,
    [Types.TOKEN_FAILURE]: failure
  })
  </code></pre>
  
  <p><strong>App/Sagas/AuthSagas.js</strong></p>
  
  <pre><code>import { call, put } from 'redux-saga/effects'
  import { path } from 'ramda'
  import AuthActions from '../Redux/AuthRedux'
  
  export function * getUserToken (api, action) {
    console.tron.log('Hello, from getUserToken');
    alert('in getUserToken');
    const { username } = action
    // make the call to the api
    const response = yield call(api.getUser, username)
  
    if (response.ok) {
      const firstUser = path(['data', 'items'], response)[0]
      const avatar = firstUser.avatar_url
      // do data conversion here if needed
      yield put(AuthActions.userSuccess(avatar))
    } else {
      yield put(AuthActions.userFailure())
    }
  }
  </code></pre>
  
  <p><strong>Sagas/index.js</strong></p>
  
  <pre><code>export default function * root () {
    yield all([
      // some sagas only receive an action
      takeLatest(StartupTypes.STARTUP, startup),
  
      // some sagas receive extra parameters in addition to an action
      takeLatest(GithubTypes.USER_REQUEST, getUserAvatar, api),
  
      // Auth sagas
      takeLatest(AuthTypes.TOKEN_REQUEST, getUserToken, api)
    ])
  }
  </code></pre>