如何在函数中访问react-router v3 prop?

时间:2017-11-20 15:49:49

标签: reactjs react-router

我正在使用refresh-fetch进行身份验证令牌刷新。如果应用程序没有收到200 http状态代码响应,我需要通过将用户重定向到注销页面来处理它。我怎样才能使用react-router v3实现这一点。

browserHistory.push('/logout');

我认为这不是一个选项,因为我使用的是basename。

const refreshToken = () => {
  return fetchJSONWithToken(`${API_ROOT}user/login/refresh`, {
    method: 'POST',
    body: JSON.stringify({ refresh_token: retrieveToken() })
  })
    .then(({body}) => {
      saveToken(body.access_token, body.refresh_token);
      return body;
    })
    .catch(error => {
      //TODO: redirect user to /logout
      throw error;
    });
};

或许有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您需要存储您的browserHistory实例并重复使用它。

示例:

public function updateCartOnStoreChange(Varien_Event_Observer $observer)
{
    $store = Mage::app()->getRequest()->getParam('___store', false);
    if(!($store===false)){
        $currentQuote = Mage::getSingleton('checkout/session')->getQuote();
        $items = $currentQuote->getAllVisibleItems();
        $cartData = Array();
        foreach ($items as $key =>$value) {
            $cartData[$value->getItemId()] = ['qty'=>$value->getQty()];
        }
        if(!empty($cartData)){
            $this->_updateShoppingCart($cartData);
        }

    }
}

Source for this example