Reactjs React Native error undefined不是函数
我目前正在尝试react native上的redux操作创建者,我在尝试验证用户身份时遇到此错误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'
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文件代码。它在哪里抛出错误?非常感谢