React中间件用于获取

时间:2017-08-11 19:01:44

标签: javascript reactjs

我有基于react.js的应用程序,其中所有ajax调用都由fetch进行。我想写一些允许我处理所有重定向的中间件(状态代码为302的响应)

我做了以下操作:主要启动文件window.fetch被覆盖 (注意我在每个提取中放置console.log('some number')以查看流程)

const fetch = window.fetch
window.fetch = function() {
return Promise.resolve(fetch.apply(window, arguments)).then((response) =>  {
    console.log("middleware is working")
    console.log(arguments)
    console.log('1')
    if (response.status == '302') {
        window.location.replace("/login");
    }
})
}

fetch("/adminInitData", {credentials: 'same-origin'})
.then((response) => {
    response.json().then((data) => {
        console.log("3")
    });
}).catch(()=> {
   some code
});

const destination = document.querySelector("#container");

ReactDOM.render(
  <Provider store={store}>
    <AppAdmin/>
  </Provider>,
destination
);

在其中一个反应组件中,我有以下fetch

fetch(urls.ADMIN_ORDER_ALL_SHOT,
        {credentials: 'same-origin',
            headers: {'Content-Type': 'application/json;charset=UTF-8'},
            method: 'GET',
        })
        .then((response) => {
            console.log("2")
            response.json().then((data) => {
                if (response.status == '200'){
                    this.setBoxStatus(data)
                }
            });
        }).catch((e)=> {
        console.log('exception in "get" url '+ urls.ADMIN_AVAILABLE_BOX_LIST + " exception= " +e)
    })

执行此代码时,控制台

中显示以下信息

enter image description here

你能解释一下以下内容: 1)为什么会出现例外以及如何解决它? 2)为什么我的覆盖提取不是在主文件中调用,其中调用地址/adminInitData

0 个答案:

没有答案