Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: 修改post请求方式 #78

Merged
merged 1 commit into from
May 17, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 19 additions & 27 deletions src/useFetch/usePost/index.ts
Original file line number Diff line number Diff line change
@@ -1,43 +1,35 @@
import useSWR from 'swr';
import isDev from 'src/isDev';
import { useCallback, useState } from 'react';
import React from 'react';

// post request ,If you want to use "post", please export this instead of using the above ,this is true
async function fetcher(path: string, request: string) {
const myInit = {
headers: {
'Content-Type': 'application/json; charset=utf-8'
},
headers: new Headers({
'Content-Type': 'application/json'
}),
body: request,
method: 'post'
};
const response = isDev
? await fetch(`/mock/${path}/post.json`)
: await fetch(`${path}`, myInit);
console.log(myInit);
return response.json();
}
export default function usePost(Request: { path: string; request: {} }) {
const [suppress, setSuppress] = useState(true);
const swr = useSWR(
suppress ? null : [Request.path, JSON.stringify(Request.request)],
fetcher,
{
suspense: false,
revalidateOnFocus: false
}
);
const revalidate = useCallback(() => {
if (suppress) {
setSuppress(false);
return Promise.resolve(true);
}
return swr.revalidate();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [suppress, swr.revalidate]);
export default function usePost(Request: { path: string; request: object }) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

我觉得使用hook去解决post问题,无异于杀鸡用牛刀,虽然也不是不行,但是觉得怪怪的,没有多大的必要性

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

还有下面这什么狗屎代码,你为什么要在我的屎上再糊一层屎?
把屎删掉从头写不香吗?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

request为什么要用Pascal命名?禁止使用object/function作为类型,应该具体化,比如{},或是()=》void

const [data, setData] = React.useState(null);
const [suppress, setSuppress] = React.useState(true);
const parser = suppress
? null
: [Request.path, JSON.stringify(Request.request)];
if(!suppress){
fetcher(parser[0], parser[1]).then(res => setData(res));
setSuppress(true);
}
const revalidate = React.useCallback(() => {
setSuppress(false);
}, []);
return {
data: swr.data,
error: swr.error,
isValidating: swr.isValidating,
data,
revalidate
};
}