首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将抓取操作转换为axios操作

将抓取操作转换为axios操作
EN

Stack Overflow用户
提问于 2019-06-26 06:15:45
回答 2查看 72关注 0票数 0

我正在尝试将我的操作从fetch更新为axios。

例如,我当前的登录信息如下所示:

代码语言:javascript
运行
复制
export const login = (email, password) => {
  return (dispatch) => {
    dispatch({
      type: 'CLEAR_MESSAGES'
    });
    return fetch('/login', {
      method: 'post',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        email: email,
        password: password
      })
    }).then((response) => {
      if (response.ok) {
        return response.json().then((json) => {
          dispatch({
            type: 'LOGIN_SUCCESS',
            token: json.token,
            user: json.user
          });
          cookie.save('token', json.token, { expires: moment().add(1, 'hour').toDate() });
          browserHistory.push('/account');
        });
      } else {
        return response.json().then((json) => {
          dispatch({
            type: 'LOGIN_FAILURE',
            messages: Array.isArray(json) ? json : [json]
          });
        });
      }
    });
  };
}

到目前为止,对于到axios的转换,我有这样的想法:

代码语言:javascript
运行
复制
export const login = (email, password) => {
    // const { email, password } = this.props;

    (dispatch) => {
    dispatch({
        type: 'CLEAR_MESSAGES'
    })
    axios({
        method: 'post',
        url: '/login',
        data: { email: email, password: password }
    }).then((response) => {
        dispatch({
        type: 'LOGIN_SUCCESS',
        token: json.token,
        user: json.user
        });
        cookie.save('token', json.token, { expires: moment().add(1, 'hour').toDate() });
        browserHistory.push('/account');
    })
    .catch(() => dispatch({
        type: 'LOGIN_FAILURE',
        messages: Array.isArray(json) ? json : [json]
        })
    )
}}

它不工作:(我不确定我做错了什么--不太熟悉axios。

我在Google Chrome控制台中遇到此错误

EN

回答 2

Stack Overflow用户

发布于 2019-06-26 06:30:23

我认为这个错误是因为您正在调用的json变量在更新后的代码中不存在。

票数 0
EN

Stack Overflow用户

发布于 2019-06-26 06:36:16

您需要通过response.data.访问数据在使用fetch()时,使用response.json()转换响应并使用thenable访问该json是有意义的,但是使用axios,您可以立即访问响应,而不需要任何转换。

代码语言:javascript
运行
复制
export const login = (email, password) => {
    return (dispatch) => {
        dispatch({
           type: 'CLEAR_MESSAGES'
        })

axios.post("/login", {email, password}).then((response) => {
    dispatch({
       type: 'LOGIN_SUCCESS',
       token: response.data.token,
       user: response.data.user
    });
    cookie.save('token', json.token, { expires: moment().add(1, 'hour').toDate() });
    browserHistory.push('/account');
})
.catch(() => dispatch({
    type: 'LOGIN_FAILURE',
    messages: Array.isArray(json) ? json : [json]
    })
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56762722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档