【发布时间】:2021-12-18 10:04:12
【问题描述】:
创建 useState Hook 后 对于性别,年龄 useState('30'); useState('女'); 如果你设置
http://api.minsu.com/product/${id}?gender=feamle&age=30
我将 react-query(useQuery) 用于 api 状态管理库。 没有什么不同,我现在正在创建一个动态页面,然后根据 id 值显示页面。
这是一个例子。
https://api.minsu.com/product/${id}
而在详细页面,http://api.minsu.com/product/${id}?gender=feamle&age=30这样,性别和年龄随机输入数据,只显示30岁女性的具体数据。
选择框(选项)
选择女性和年龄后
将api设置为https://api.minsu.com/product/${id}?gender=${gender}&age=${age}
我想通过api get接收到性别和年龄后根据选择的select通过这种方式修改显示详细信息页面。
我好像没有直接用输入和选择框,也不知道用useState Hook怎么写查询。
但我不知道该怎么办。
这是我现在的代码。
我想了大约一个小时。 我用 setState('') 创建了年龄和性别。
const [gender, setGenders] = useState('female');
const [age, setAges] = useState('30');
const fetchDetail = async () => {
const res = await
fetch(`https://api.minsu.com/product/${id}?gender=${female}&age=${age}`, {
headers: {
Authorization: `Bearer ${token}`,
},
withCredentials: true
});
return res.json();
}
const { data: ProductDetail, status, error, isFetching } = useQuery('productDetail', fetchDetail, {
notifyOnChangeProps: ['data'],
staleTime: 100000000,
})
console.log(ProductDetail);
return (
<input type="number" placeholder={Enter your age} .... />
<button onClick={onClick} />
<option>Select gender</option>
<option value="male">Male</option>
<option value="female">Female</option>
)
即总结
const [inputs, setInputs] = useState({
age: '30',
gender: 'female',
})
const {age, gender} = inputs;
const onChange = (e) =>{
setInputs({ ...inputs, [e.target.age]:e.target.value })
}
return (
<input name="age" onChange={onChange} placeholder = "age"/>
<input name="gender" onChange={onChange} placeholder = "gender"/>
)
我想在创建输入后通过执行 onChange 来更改查询,但是渲染不起作用。
【问题讨论】:
-
更新表单时获取到的网址不更新的问题吗?
-
@HenryWoody 是的,没错。如何在接收到年龄和性别作为输入(年龄),性别(选择框)后更新查询
-
这和stackoverflow.com/questions/69834291/…是同一个问题吗?在这两种情况下,仍然不清楚问题是什么。如果我在查看 useQuery 文档后不得不猜测,您需要更新
queryKey参数以触发钩子。 -
@DrewReese 我不知道是否需要将查询更改为带有年龄和性别的 setState。
-
这能回答你的问题吗? Get form data in ReactJS
标签: reactjs react-hooks react-router react-query