如何在 redux 的动作上调用动作?

How to call an action on the actions of redux?

我是这样调用动作的:

<Button style={{ margin: 8, borderRadius: 8 }}
          icon="check-circle" mode="outlined" 
          onPress={            
          () => this.props.authenticate(email, password)
          }
          >

和这样的身份验证功能:

import {REQUEST, RECEIVED, FAILED, SIGNOUT, apiUrl} from '../types';
import axios from 'axios'

export function authenticate(email, password) {
    return (dispatch, getState) => {
        console.log('authomy');
      dispatch(startAuthentication())
      return axios({
        url: apiUrl('/api/v1/auth/sign_in'),
        method: 'POST',
        data: { email, password }
      }).then(response => {
        const uid = response.headers['uid']
        const client = response.headers['client']
        const accessToken = response.headers['access-token']
        const expiry = response.headers['expiry']
        dispatch(successAuthentication(uid, client, accessToken, expiry))
      }).catch(error => {
        dispatch(doSignout())
      })
    }
  }

  export function signout() {
    console.log('in signout')
    return (dispatch, getState) => {
      const { auth } = getState()
      return axios({
        url: apiUrl('/api/somewhere/sign_out'),
        method: 'DELETE',
        headers: {
          'access-token': auth.accessToken,
          'client': auth.client,
          'uid': auth.uid
        }
      }).then(response => {
        console.log('sent')
        dispatch(doSignout())
        return { type: SIGNOUT }
      }).catch(error => {
        console.log(error)
        dispatch(doSignout())
        return { type: SIGNOUT }
      })
    }
  }

  export function expireAuthentication() {
    return doSignout()
  }

  export function startAuthentication() {
      console.log('dispatch startAuthentication')
    return { type: REQUEST }
  }

  export function successAuthentication(uid, client, accessToken, expiry) {
    return { type: RECEIVED, uid, client, accessToken, expiry }
  }

  function failAuthentication() {
    return { type: FAILED }
  }

  export function doSignout() {
    return { type: SIGNOUT }
  }

我收到错误: 操作不能有未定义的 "type" 属性。你有没有拼错常数?

我找不到错误的确切位置

所以我添加了您需要的 AuthAction 文件,错误所在???

The error

const REQUEST = 'auth/REQUEST'
const RECEIVED = 'auth/RECEIVED'
const FAILED = 'auth/FAILED'
const SIGNOUT = 'auth/SIGNOUT'

export const HOST_URL = 'http://192.168.10.196:3000'
export function hostUrl(route) { return HOST_URL + route }
export const API_URL = 'http://192.168.10.196:3000'
export function apiUrl(route) { return API_URL + route }
export const ASSETS_URL = 'http://192.168.10.196:3000'
export function assetsUrl(route) {
    return ASSETS_URL + route 
}

这里的问题是您不是导出您的types.js文件中的操作。

试试这个:

export const REQUEST = 'auth/REQUEST'
export const RECEIVED = 'auth/RECEIVED'
export const FAILED = 'auth/FAILED'
export const SIGNOUT = 'auth/SIGNOUT'

export const HOST_URL = 'http://192.168.10.196:3000'
export function hostUrl(route) { return HOST_URL + route }
export const API_URL = 'http://192.168.10.196:3000'
export function apiUrl(route) { return API_URL + route }
export const ASSETS_URL = 'http://192.168.10.196:3000'
export function assetsUrl(route) {
    return ASSETS_URL + route 
}