我正在尝试根据用户输入字段获取api数据。如何获取这些数据的值?
我的apiendpoint如下“http://localhost:8000/api/p_list?search=" . 每当用户输入值时,endpoint如下“http://localhost:8000/api/p_list?search=01这里输入的字段值为“01”。我想得到结果的值。
我可能是新来的反应。我尝试了下面这样的东西,但这是静态API网址我试图获取。
如果有人能帮我解决我要解决的问题,那就太好了。事先非常感谢你。
/src/productList。js
import React, {Component} from "react";
import Contacts from './productListHook.js';
export default class App extends Component{
state = {
contacts: []
}
componentDidMount() {
fetch('http://localhost:8000/api/p_list?search=')
.then(res => res.json())
.then((data) => {
this.setState({ contacts: data })
})
.catch(console.log)
}
render(){
return(
<Contacts contacts={this.state.contacts} />
)
}
}
/src/ProductListHook。js
import React from 'react'
const Contacts = ({ contacts }) => {
return (
<section class="product_list section_padding">
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="product_sidebar">
<div class="single_sedebar">
<form action="#">
<input type="text" name="#" placeholder="Search keyword"/>
<i class="ti-search"></i>
</form>
</div>
</div>
</div>
<div class="col-sm-9">
<div class="product_list">
<div class="row">
{contacts.map((contact) => (
<div class="col-lg-3 col-md-9">
<div class="single_product_item">
<img src={contact.image} alt="" class="img-fluid" />
<h3> <a href={contact.url}>{contact.title}</a> </h3>
<p>From ${contact.price}</p>
</div>
</div>
))}
</div>
<div class="load_more_btn text-center">
<a href="#" class="btn_3">Load More</a>
</div>
</div>
</div>
</div>
</div>
</section>
)
};
export default Contacts
您的联系人
组件具有输入,但API调用是在其父App
组件中进行的。
您需要做的是将另一个prop
传递给Contacts
,这是一个每当Contacts
中的输入状态发生变化时都会调用的函数。
例子:
class App extends React.Component {
...
search(inputValue){
fetch(`http://localhost:8000/api/p_list?search=${inputValue}`)
.then(res => res.json())
.then((data) => {
this.setState({ contacts: data })
})
.catch(console.log)
}
render() {
<Contacts contacts={this.state.contacts} onSearch={search}/>
}
现在在联系人
组件中:
const Contacts = ({contacts, onSearch}) => {
const [search, setSearch] = useState('');
return (
...
<input onChange={
(e) => {
setSearch(search);
onSearch(e.currentTarget.value);
}
} value={search} .../>
...
)
}
我只是编写了概念性代码来使它工作,它缺少了关于您的项目的bind
和其他具体实现。
我强烈建议您在onSearch函数中实现一个逻辑来延迟API调用,因为它将在输入中键入的新字母中触发。这会使api过载。
希望能有帮助。
嗨,请检查这个完整的例子:它正在使用文本框从用户那里获取用户标识,点击按钮后,它用该用户标识调用api,并获取该用户的所有帖子。之后,它显示屏幕上的所有帖子标题。
import React, {useEffect, useState} from "react";
import axios from 'axios';
function PostListPageByUser() {
const [posts, setPost] = useState([]);
const [userId, setUserId] = useState([]);
let signal = axios.CancelToken.source();
function handleChange(event) {
setUserId(event.target.value);
}
function handleClick(event) {
axios.get(`https://jsonplaceholder.typicode.com/posts?userId=${userId}`, {
cancelToken: signal.token,
})
.then(res => {
const posts = res.data;
setPost(posts);
}).catch(err => {
console.log(err);
});
}
return (
<React.Fragment>
<span>Enter User Id</span>
<input type="text" onChange={handleChange}/>
<button onClick={handleClick}>Get Posts By User</button>
<ul>
{
posts.map(post => <li key={post.id}>{post.title}</li>)
}
</ul>
</React.Fragment>
);
}
export default PostListPageByUser;
根据您对我的回答的评论,我在表单提交中添加了此示例:
import React, {useEffect, useState} from "react";
import axios from 'axios';
function PostListPageByUser() {
const [posts, setPost] = useState([]);
const [userId, setUserId] = useState([]);
let signal = axios.CancelToken.source();
function handleChange(event) {
setUserId(event.target.value);
}
function handleSubmit(event) {
event.preventDefault();
axios.get(`https://jsonplaceholder.typicode.com/posts?userId=${userId}`, {
cancelToken: signal.token,
})
.then(res => {
const posts = res.data;
setPost(posts);
}).catch(err => {
console.log(err);
});
}
return (
<form onSubmit={handleSubmit}>
<span>Enter User Id</span>
<input type="text" onChange={handleChange}/>
<button type="submit">Get Posts By User</button>
<ul>
{
posts.map(post => <li key={post.id}>{post.title}</li>)
}
</ul>
</form>
);
}
export default PostListPageByUser;
问题内容: 我有以下React组件: 控制台给了我-任何想法这段代码有什么问题吗? 问题答案: 您应该在类MyComponent下使用构造函数扩展React.Component 然后您将获得标题的结果
问题内容: 我有一个输入字段,如下所示: 我想获取输入字段的值并将其分配给会话。如何使用PHP或jQuery做到这一点? 问题答案: 使用PHP 或超全局变量通过HTML标签的名称来检索输入标签的值。 例如,更改表单中的方法,然后通过输入名称回显该值: 使用方法: 要显示值: 使用方法: 要显示值:
我有一个输入字段如下: 我想获取输入字段值,并将其分配给会话。如何使用PHP或jQuery实现这一点?
问题内容: 我在下面使用一个变量。 这由我的输入字段使用。 激活后,我想清除我的输入字段。但是,我不确定该怎么做。 另外,如本例所示,有人指出我应该将属性用于输入值。我还不清楚这到底意味着什么。在这种情况下有什么意义? 问题答案: 您可以使用输入类型=“重置”
我是新的Java和使用JIRA MISC自定义字段加载项,并需要一些逻辑辅助来解决两个下拉字段之间的数学函数。 字段一是“用户成本”。该字段包含四个字符串选择,用户价格显示在字符串末尾。 Sam花费0.21 米奇花费0.419 兰斯2.66 xmen花费13.338 字段二是“用法”。该字段包含两个字符串选择: 24小时(维护除外) 该参数应被调用到名为“用户总成本”的新字段中此字段将自动显示用户
问题内容: 我正在使用JavaScript进行搜索。我会使用一种表格,但是它弄乱了我页面上的其他内容。我有此输入文本字段: 这是我的JavaScript代码: 如何从文本字段获取值到JavaScript? 问题答案: 有多种方法可直接获取输入文本框值(无需将输入元素包装在表单元素内): 方法1: 得到所需盒子的价值 例如, 注意: 方法2、3、4和6返回元素的集合,因此请使用[whole_numb