我尝试使用useEffect通过useDispatch挂钩从API提取数据:
const dispatch = useDispatch();
useEffect(() => {dispatch(actions.fetchSearch(submitValue))}, [submitValue, dispatch]);
其中 submitValue -是搜索查询的输入值。 fetchSearch()看起来像这样:
export const fetchSearch = (query) => {
return dispatch => {
const queryParams = 'http://190.75.199.65/api/products?count=20&sort_by=numberOfEntries&sort_order=DESC&page=1&search='+query;
axios.get(queryParams)
.then( res=> {
dispatch(fetchSearchSuccess(res.data));
}
)
};
};
我可以通过此代码获取数据,但始终出现错误:
除了函数之外,效果函数不能返回其他任何东西 用于清理。
好像您写了useEffect(async()=> ...)或返回了 诺言。而是在您的效果中编写异步函数并调用 立即
我试图在useEffect内创建异步函数,但错误相同,或者我做错了。
答案 0 :(得分:0)
尝试这样做:
const dispatch = useDispatch();
useEffect(() => {
(async () => {
await dispatch(actions.fetchSearch(submitValue));
})();
}, [submitValue, dispatch]);
我认为这是因为您直接调用了异步函数,并且在useEffect中返回了promise。
答案 1 :(得分:0)
代码工作无任何变化
const dispatch = useDispatch();
useEffect(() => {dispatch(actions.fetchSearch(submitValue))}, [submitValue, dispatch]);
只是忘了删除旧的useEffect。