在 React 中使用 Hook 填充状态

Posted

技术标签:

【中文标题】在 React 中使用 Hook 填充状态【英文标题】:Use Hook to populate state in React 【发布时间】:2021-04-16 01:39:41 【问题描述】:

我正在尝试使用 Hook 以以下方式填充状态。

class CreateService extends React.Component 
  constructor(props) 
    super(props);
    this.state = 
      serviceToUSe: []
    ;
  


  useEffect(() => 
    if (window.location.hostname == 'myhost') 
        this.setState( serviceToUSe: require('../public/service/myhost.com.json') )
     else 
      this.setState( serviceToUSe: require('../public/service/default.json') )
    
    );
  

我想在加载组件时填充serviceToUSe。但我遇到了错误。

【问题讨论】:

钩子用于功能组件。你不能在类组件中使用它们 【参考方案1】:

你不能在类组件中使用 Hooks。钩子只能在功能组件中使用

const CreateService = () => 

  const [serviceToUse, setServiceToUse] = useState([])
   


  useEffect(() => 
    if (window.location.hostname == 'myhost') 
      setServiceToUse([require('../public/service/myhost.com.json'])
     else 
      setServiceToUse([require('../public/service/default.json')])
    
  , []);
  

你的钩子语法也不正确。详细了解Hooks

【讨论】:

感谢@Pushkin 的回复。您的CreateService 会在加载组件时调用吗? “加载组件时调用”,你的意思是同一个组件还是另一个组件。您打算将其用作 Angular 服务吗? 谢谢@Pushkin。我的意思是相同的组件。我可以在 Class Component 中使用什么而不是 Hooks (useEffect) ?谢谢。 它将在加载时运行。对于类方法,请查看生命周期方法。在这种情况下,您可以使用 componentDidMount() @DrewReese,谢谢,我没注意到this

以上是关于在 React 中使用 Hook 填充状态的主要内容,如果未能解决你的问题,请参考以下文章

React useRef 在运行 useEffect 以填充初始状态后返回 null

如何在 promise 中设置 react hook 的值?

如何在 promise 中设置 react hook 的值?

状态栏添加额外的填充 React-native

在 React Flux 上,我应该在哪里填充我的 Store 的初始状态?

使用 React Hook 动态设置 GraphQL 变量不起作用