根据用户输入动态更改 Axios baseURL
Change Axios baseURL dynamically according to user Input
我想根据用户输入更改 Axios 基础 URL。我正在使用 google 本书 API 并希望根据输入框中输入的任何内容更改搜索查询 (q=)。
我认为这可以通过将 baseURL 放在一个函数中并在提交按钮的 onClick 上调用它来完成。
const baseURL = `https://www.googleapis.com/books/v1/volumes?q={input}`;
export default function App() {
const [post, setPost] = React.useState(null);
React.useEffect(() => {
axios.get(baseURL).then((response) => {
setPost(response.data);
});
}, []);
if (!post) return null;
return (
<>
<input placeholder="bookname"></input>
<button>Submit</button>
<h1>{post.items[0].volumeInfo.title}</h1>
<h2>{post.items[0].volumeInfo.publisher}</h2>
<img src={post.items[0].volumeInfo.imageLinks.thumbnail} />
</>
);
}
谢谢!
您可以维护一个可以保存输入文本的状态变量。 url
可以使用 es6 模板字符串动态构造。
export default function App() {
const [post, setPost] = React.useState(null);
const [query, setQuery] = React.useState("themartian");
async function getBooks() {
const baseURL = `https://www.googleapis.com/books/v1/volumes?q=${query}`;
const response = await axios.get(baseURL);
setPost(response.data);
}
function onClick() {
getBooks();
}
React.useEffect(() => {
getBooks();
}, []);
...
还有一种使用 useRef
的替代方法,因为我们真的不需要状态变量来在每次用户输入时触发 re-render。
export default function App() {
const [post, setPost] = React.useState(null);
const inputRef = React.useRef(null);
async function getBooks() {
let query = "themartian";
if (inputRef.current) {
query = inputRef.current.value;
}
const url = `https://www.googleapis.com/books/v1/volumes?q=${query}`;
const response = await axios.get(url);
setPost(response.data);
}
function onClick() {
getBooks();
}
React.useEffect(() => {
getBooks();
}, []);
...
我想根据用户输入更改 Axios 基础 URL。我正在使用 google 本书 API 并希望根据输入框中输入的任何内容更改搜索查询 (q=)。
我认为这可以通过将 baseURL 放在一个函数中并在提交按钮的 onClick 上调用它来完成。
const baseURL = `https://www.googleapis.com/books/v1/volumes?q={input}`;
export default function App() {
const [post, setPost] = React.useState(null);
React.useEffect(() => {
axios.get(baseURL).then((response) => {
setPost(response.data);
});
}, []);
if (!post) return null;
return (
<>
<input placeholder="bookname"></input>
<button>Submit</button>
<h1>{post.items[0].volumeInfo.title}</h1>
<h2>{post.items[0].volumeInfo.publisher}</h2>
<img src={post.items[0].volumeInfo.imageLinks.thumbnail} />
</>
);
}
谢谢!
您可以维护一个可以保存输入文本的状态变量。 url
可以使用 es6 模板字符串动态构造。
export default function App() {
const [post, setPost] = React.useState(null);
const [query, setQuery] = React.useState("themartian");
async function getBooks() {
const baseURL = `https://www.googleapis.com/books/v1/volumes?q=${query}`;
const response = await axios.get(baseURL);
setPost(response.data);
}
function onClick() {
getBooks();
}
React.useEffect(() => {
getBooks();
}, []);
...
还有一种使用 useRef
的替代方法,因为我们真的不需要状态变量来在每次用户输入时触发 re-render。
export default function App() {
const [post, setPost] = React.useState(null);
const inputRef = React.useRef(null);
async function getBooks() {
let query = "themartian";
if (inputRef.current) {
query = inputRef.current.value;
}
const url = `https://www.googleapis.com/books/v1/volumes?q=${query}`;
const response = await axios.get(url);
setPost(response.data);
}
function onClick() {
getBooks();
}
React.useEffect(() => {
getBooks();
}, []);
...