Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React Native error undefined不是函数_Reactjs_React Native - Fatal编程技术网

Reactjs React Native error undefined不是函数

Reactjs React Native error undefined不是函数,reactjs,react-native,Reactjs,React Native,我目前正在尝试react native上的redux操作创建者,我在尝试验证用户身份时遇到此错误 export function authenticate(email, password) { return (dispatch) => { dispatch(request()); fetch(path + '/api/v1/account/authenticate', { method: 'POST', headers: { 'Accept': 'application/json'

我目前正在尝试react native上的redux操作创建者,我在尝试验证用户身份时遇到此错误

export function authenticate(email, password) {
return (dispatch) => { dispatch(request());
    fetch(path + '/api/v1/account/authenticate', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, body: qs.stringify({ email: email, password: password }) })
        .then((r) => { return r.json(); })
        .then((a) => {
            if(a.success === false) { dispatch(failure(a)); }  
            AsyncStorage.setItem('hash', a.hash);
            AsyncStorage.setItem('token', a.token); 
                dispatch(success(a)); })
        .catch((error) => { dispatch(failure(error)); });
}

function success(payload) { return { type: constants.__authenticate_success, payload: payload }; }
function failure(payload) { return { type: constants.__authenticate_failure, payload: payload }; }
function request() { return { type: constants.__authenticate_request }; }

完整代码为:

import qs from 'querystring';
import { constants } from './account.constants';
import { AsyncStorage } from 'react-native';

const path = 'https://test.dev';

export function authenticate(email, password) {
    return (dispatch) => { dispatch(request());
        fetch(path + '/api/v1/account/authenticate', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
            body: qs.stringify({ email, password }) }).then((r) => { return r.json(); })
            .then((a) => {
                if(a.success === false) { dispatch(failure(a)); }  
                AsyncStorage.setItem('hash', a.hash);
                AsyncStorage.setItem('token', a.token); 
                    dispatch(success(a)); })
            .catch((error) => { dispatch(failure(error)); });
    }

    function success(payload) { return { type: constants.__authenticate_success, payload: payload }; }
    function failure(payload) { return { type: constants.__authenticate_failure, payload: payload }; }
    function request() { return { type: constants.__authenticate_request }; }
}

export function connectivity() {
    return (dispatch) => {
        AsyncStorage.multiGet(['hash', 'token']).then((r) => { const token = r[1][1]; const hash = r[0][1]; 
            if(token && hash) {
                fetch(path + '/api/v1/account/connectivity', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Authorization': 'Bearer ' + token },
                body: qs.stringify({ token: token, hash: hash }) }).then((r) => { return r.json(); })
                    .then((a) => { console.log(a);
                        if(a.hasOwnProperty('message') && a.message === 'Unauthenticated.') { dispatch(failure({ connected: false, logout: true })); }
                        else if(a.logout === true) { dispatch(failure(a)); }
                        else { dispatch(success(a)); }
                    }).catch((error) => { dispatch(failure({ connected: false, logout: true })); });
            } else { dispatch(failure({ connected: false })); }
        }).catch((error) => { dispatch(failure({ connected: false, logout: true })); })
    }

    function success(payload) { return { type: constants.__connectivity_success, payload: payload }; }
    function failure(payload) { return { type: constants.__connectivity_failure, payload: payload }; }
}

export function clear() { return (dispatch) => { 
    //AsyncStorage.multiRemove(['token', 'hash']);
    dispatch({ type: constants.__clear_state }); } }

export function fetch() {
    return (dispatch) => {
        AsyncStorage.getItem('token').then((r) => { const token = r;
            if(token) {
                fetch(path + '/api/v1/account/fetch', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Authorization': 'Bearer ' + token } }).then((r) => { return r.json(); })
                    .then((a) => {

                    }).catch((error) => { dispatch(failure({ account: false })); })
            } else { dispatch(failure({ account: false })); };
        }).catch((error) => dispatch(failure({ account: false })) );
    }

    function success(payload) { return { type: constants.__fetch_account_success, payload: payload }; }
    function failure(payload) { return { type: constants.__fetch_account_failure, payload: payload }; }
}
使用以下函数在react组件中触发操作:

onSend(event) { this.setState({ loading: true }); this.props.authenticate(this.state.email, this.state.password); }

错误图像来自我使用android Studio的android仿真器。第一次代码运行良好,但之后一切都不起作用。

问题是您声明了一个名为
fetch
的函数,并且尝试使用fetch API的
fetch
函数,与此同名。

您能提供此文件的完整代码吗?我提供了action creators文件代码。它在哪里抛出错误?非常感谢