我正在进行一个小项目的最后一步,该项目使用高阶组件 (HOC) 来呈现一个简单的类似 Tinder 的应用程序。
内部组件是一个基于类的组件,具有自己的 fetch() 调用,可以为用户呈现数据和图片。外部 HOC 是一个功能组件。要让应用程序正常工作,我所需要做的就是找到一种方法来刷新内部组件并在用户按下按钮时触发 API 调用。我正在尝试使用useStateHOC 中的钩子来执行此操作。
import React, { useState } from 'react';
export default function TinderCard(component) {
return function (props) {
const [isLoading, setIsLoading] = useState(false);
const refresh = () => {
// change state. set isLoading to true and then back to false.
setIsLoading(true);
setIsLoading(false);
};
const C = component;
return (
<div className='card user-card-container'>
<div className='card-body user-card-inner'>
{isLoading ? <h3>Loading...</h3> : <C />}
<div className='buttons-container'>
<button className='dislike' onClick={() => refresh()}>
<i className='fa fa-times'></i>
</button>
<button className='like' onClick={() => refresh()}>
<i className='fa fa-heart'></i>
</button>
</div>
</div>
</div>
);
};
}
一切都工作正常,直到我使用 useState 钩子,它阻止应用程序渲染并显示一条非常讨厌的错误消息。这个:
Line 5:39: React Hook "useState" cannot be called inside a callback. React Hooks must be called in a React function component or a custom React Hook function react-hooks/rules-of-hooks
我的问题是 - (1) 如何useState在 HOC 中使用来在单击按钮时更改状态,以及 (2) 有没有一种更简单的方法可以在按下按钮时重新加载子组件 - 也许不使用状态?
qq_花开花谢_0
鸿蒙传说
相关分类