【发布时间】:2021-11-13 19:38:26
【问题描述】:
这里是sn-p的代码,我想改成Functional组件,我的代码差不多写到这里了,请查收。
import _ from 'lodash';
import { ListItem, SearchBar, Avatar } from 'react-native-elements';
import { getUsers, contains } from './api/index';
function App(props) {
const [loading, setLoading] = useState(false);
const [data, setData] = useState([]);
const [error, setError] = useState(null);
const [fullData, setFullData] = useState([]);
const [query, setQuery] = useState();
useEffect(() => {
makeRemoteRequest();
},[query]);
const makeRemoteRequest = _.debounce(() => {
setLoading(true);
getUsers(20, query)
.then((users) => {
setLoading(false);
setData(users);
setFullData(users);
})
.catch((error) => {
setLoading(false);
});
}, 250);
const handleSearch = (text) => {
const formattedQuery = text.toLowerCase();
const data = _.filter(fullData, (user) => {
return contains(user, formattedQuery);
});
// I want to change the below code to work on Functioanl component
// this.setState({ data, query: text }, () => //this.makeRemoteRequest());
// New code here.....
};
我以不同的方式实现它,但不起作用。
【问题讨论】:
-
你打算用
data做什么? -
搜索数据,在 setState 添加数据并通过文本分配查询,在每个用户输入时我都会检查字符。
-
如果它是一个 api 调用,那么你可能想使用 useEffect Hook
-
@SachinYadav 我已经调用了 API 并设置了数据,现在正在尝试处理搜索。
-
你在哪里进行 api 调用很重要,你需要在 useEffect() 钩子中调用 makeRemoteRequest()
标签: javascript reactjs react-native react-hooks