javascript - Axios post 方法 React.状态 Redux 不更新

标签 javascript reactjs redux axios

Redux 中的State 有问题 这是我的 axios 请求

case 'REGISTER_USER':{

  var userData = {username: action.payload.username, password : action.payload.password};

  axios({
    method: 'post',
    url: 'php/register.php',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: userData
  }).then(function(response) {
    state.error = response.data.errors;
    state.success = response.data.success;
});
    return {state};
    break;
  }//end REGISTER_USER

默认state.errorstate.success为空array。 第一次点击后 state.error 仍然是空数组,因为 axois 没有完成请求。第二次点击后一切正常。

这里我对 Prop 有疑问:

{this.props.error.length>0? <div className="alert alert-danger">{this.props.error[0]}</div>: ''}

并存储:

@connect((store)=>{
  return{
    error: store.app.error,
    success: store.app.success,
  }
})

你知道我如何在 axios 方法发布 完成后使用新的 Props 渲染 component 吗?

最佳答案

我想你已经把这段代码写进了reducer,api调用应该在Action Dispacher里面完成。成功调用 api 后,您必须将数据分派(dispatch)给 reducer。在 reducer 中,你应该只分配数据,在 reducer 中没有 API 调用。

例如

Action 调度器

export function APIDispatch(data)
{
    return{
        type:'API_DATA_RECD',                
        data:data
    }
}

export function callAPI(){
    return function(dispatch){
         axios({
            method: 'post',
            url: 'php/register.php',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: userData
          }).then(function(response) {
            state.error = response.data.errors;
            state.success = response.data.success;
            dispatch(APIDispatch(state))
        });

    }
}

reducer

case 'API_DATA_RECD':
    {   
        // you will get data from action.data
    }

关于javascript - Axios post 方法 React.状态 Redux 不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45303753/

相关文章:

javascript - 对象到数组的 react

javascript - react 姿势延迟姿势组高度转换,直到 children 之后

javascript - 处理 React 中的 localStorage 更改以重新渲染组件

javascript - 为什么它不能以这种方式显示用户点击显示在模态中的内容?

javascript - 如何修复错误: Could not find router reducer in state tree,它必须安装在 "router"下

javascript - 无法解构 'chats' 的属性 'this.props.data',因为它未定义

javascript - 如何跳转到不同 fullpage.js 滚动部分之间的 #id anchor ?

javascript - 在 Nightwatch 中设置 Firefox 首选项

javascript - Angular Directive(指令)中的事件处理程序

javascript - 在运行时动态更改 QML 主题