V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Danswerme  ›  全部回复第 88 页 / 共 164 页
回复总数  3275
1 ... 84  85  86  87  88  89  90  91  92  93 ... 164  
2020-03-23 20:56:17 +08:00
回复了 solaro 创建的主题 问与答 求推荐 WIN10 下的支持人脸识别人脸解锁的摄像头
淘宝搜索 windows hello
我是分母
2020-01-16 16:53:35 +08:00
回复了 Danswerme 创建的主题 问与答 某些中文歌在没看过歌词的情况下你们能听懂唱的什么吗?
@zlkent 反正现在的好多歌莫名其妙的就是有那么点听不懂, 打开歌词对着一看的确是中文,有点佛,刀怒斩雪翼雕倒是能听懂。
2020-01-16 16:45:10 +08:00
回复了 Danswerme 创建的主题 问与答 某些中文歌在没看过歌词的情况下你们能听懂唱的什么吗?
@rimutuyuan 这个一般人应该很难做到吧,我初中时曾经试图不看歌词听懂本草纲目,跪了。
2020-01-16 16:42:05 +08:00
回复了 Danswerme 创建的主题 问与答 某些中文歌在没看过歌词的情况下你们能听懂唱的什么吗?
不是说粤语歌喔。
2020-01-08 10:15:17 +08:00
回复了 Renco 创建的主题 程序员 上午水贴,睡傻了忘记带鼠标,获得了生产效率-50%的 debuff
触控板用久了肘子疼...
2020-01-07 10:03:40 +08:00
回复了 Danswerme 创建的主题 macOS 升级 macOS 10.15.2 遇到的几个问题
@wbf1013 第四点在 10.15.1 都没有,到 10.15.2 就变这样了。
@miniwade514 谢谢指点!是这里的问题了,我研究研究应该将这个验证逻辑放到哪里去
@simonv3ex 呃,你指的什么卡?
@miniwade514 是的,我指的捕获就是那一行。我是将用户 token 保存在 localStorage 里,用户信息、是否登录等状态放在 redux 里,每次第一次打开页面时会发请求去验证 token 是否合法,如果合法就将服务器返回的用户信息放进 redux 里,并将是否登录设置为 true。

不合法时服务器返回 401 就发起一个 dispatch,将是否登录设置为 false,下面的 PrivateRoute 会直接跳转到 login 页面。
@manami 我也是菜鸟,以前都是直接将 axios 封装成一个 http 模块,然后在用到的地方引入。这次在 react-china http://react-china.org/t/topic/32941 看到了将 axios 直接放在 context 里的方法,特地用的试了下,结果就卡在这里了
@manami 代码我贴在楼上啦,你看看。 如果用按钮点击执行这个 ajax 函数时,axios 拦截器可以正常捕获到错误,而在组件刚挂载完时执行这个 ajax 函数就无法捕获到,不知道是哪里的问题。
import React from "react";
import ReactDOM from "react-dom";
import { AjaxProvider } from "./Ajax";
import { HomePage } from "./HomePage";

function App() {
return (
<AjaxProvider>
<HomePage />
</AjaxProvider>
);
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
import React, { useEffect, Component } from "react";
import { useAjax, AjaxContext } from "./Ajax";

export function HomePage() {
const ajax = useAjax();

async function testToken() {
try {
const result = await ajax.get(
"https://api.youneedabudget.com/v1/budgets"
);
} catch (err) {
console.log(err);
}
}

useEffect(() => {
// testToken();

setTimeout(testToken);
});

return (
<div>
App
<button onClick={testToken}>GoGoGo</button>
</div>
);
}
import React, { useContext, useEffect } from "react";
import axios from "axios";

export const AjaxContext = React.createContext();
export const useAjax = () => useContext(AjaxContext);

const instance = axios.create({
timeout: 5000
});

export function AjaxProvider({ children }) {
useEffect(() => {
const onReq = config => {
config.headers["Authorization"] = localStorage.getItem("token");
return config;
};
const onErr = err => Promise.reject(err);

const flag = instance.interceptors.request.use(onReq, onErr);
return () => instance.interceptors.request.eject(flag);
});

useEffect(() => {
const onRes = res => res;
const onErr = err => {
if (err.response) {
const { status } = err.response;
if (status === 401) {
console.log("捕获到了!");
}
}

return Promise.reject(err);
};

const flag = instance.interceptors.response.use(onRes, onErr);
return () => instance.interceptors.response.eject(flag);
});

const ajax = {
get: path => instance.get(path),
post: (path, data) => instance.post(path, data),
put: (path, data) => instance.put(path, data),
delete: path => instance.delete(path)
};

return <AjaxContext.Provider value={ajax} children={children} />;
}
1. querySelector 接收一个 css 选择器字符串,比如 "#root > .nav:nth-child(1)",后者只能接收 id 名称。
2. 请检查你的代码
1 ... 84  85  86  87  88  89  90  91  92  93 ... 164  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   761 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 21:23 · PVG 05:23 · LAX 14:23 · JFK 17:23
Developed with CodeLauncher
♥ Do have faith in what you're doing.