我正在构建一个非常简单的api和react-native应用程序.服务器运行良好(使用PostMan测试)但应用程序不会调用服务器.当axios必须发送帖子请求时它会阻止(见下文).
我很绝望:-(在这里度过太多时间.请,如果你能帮助我…
这是我的代码LogIn页面.它派遣动作创建者(使用redux)给出电子邮件和密码:
... const LogIn = React.createClass({ submitLogin() { // log in the server if (this.props.email !== '' && this.props.psw !== '') { if (this.props.valid === true) { this.props.dispatch(logIn(this.props.email,this.props.psw)); } else { this.props.dispatch(errorTyping()); } } },...
电子邮件和密码被检索并发送给动作创建者:
import axios from 'axios'; import { SIGNIN_URL,SIGNUP_URL } from '../api'; // import { adDalert } from './alerts'; exports.logIn = (email,password) => { return function (dispatch) { console.log(email); console.log(password); console.log(SIGNIN_URL); return axios.post(SIGNIN_URL,{ email,password }) .then( (response) => { console.log(response); const { token,userId } = response.data; dispatch(authUser(userId)); } ) .catch( (error) => { console.log('Could not log in'); } ); }; }; const authUser = (userId) => { return { type: 'AUTH_USER',userId }; }; ...
axios之前的三个console.log()以正确的方式显示数据. SIGNIN_URL和我在邮递员中使用的完全相同. ……但是axios没有打电话.
只是给所有的卡,这是我的商店:
import thunk from 'redux-thunk'; import { createStore,compose,applyMiddleware } from 'redux'; import { AsyncStorage } from 'react-native'; import { persistStore,autoRehydrate } from 'redux-persist'; import reducer from '../reducer'; const defaultState = {}; exports.configureStore = (initialState = defaultState) => { const store = createStore(reducer,initialState,compose( applyMiddleware(thunk),autoRehydrate() )); persistStore(store,{ storage: AsyncStorage }); return store; };
调试器中没有错误消息(但axios调用给出的消息(‘无法登录’)
我在Windows 10上,有:
"axios": "^0.15.3","react": "15.4.2","react-native": "0.38.0","redux": "^3.6.0"
即使我准备一个简单的GET调用并且服务器应该返回一条简单的消息(使用邮递员和浏览器测试),调用也会失败:
exports.test = () => { return function () { return axios.get('https://localhost:3000/v1/test') .then( (response) => { console.log(response); } ) .catch( (error) => { console.log('error'); } ); }; };
最后,我还尝试修改调用添加标题如下,因为api被编码为接受json:
const head = { headers: { 'Content-Type': 'application/json' } }; exports.test = () => { return function () { return axios.get('https://api.github.com/users/massimopibiri',head) .then( (response) => { console.log(response); } ) .catch( (error) => { console.log('error'); } ); }; };
但即使这样也行不通.希望有人能帮助我.其他类似的问题没有.