React Hook:如何使用React Hook重写此旧代码?

时间:2019-08-11 01:01:17

标签: reactjs

我有# Ref: https://stackoverflow.com/a/50404308/9331359 from pyspark import SparkContext context = SparkContext() context.addPyFile('/anaconda3/lib/python3.7/site-packages/pyspark/jars/graphframes-0.7.0-spark2.4-s_2.11.jar') context # Ref: https://stackoverflow.com/a/55430066/9331359 from pyspark.sql.session import SparkSession spark = SparkSession(context) from pyspark.sql.types import * from graphframes import * 个方法调用componentDidMountthis.initializeSelections()在该方法内部具有以下实现。

this.initalizeSelections()

如果我要使用React Hook重写它,我会陷入困境,但是我感觉被卡住了。.这是我到目前为止所拥有的,它看起来不适合工作代码。

initializeSelections = () => {
   this.setState({
     selectedRetailers: this.getAllConnectedRetailerIds(),
     selectedPriceTypes: this.getDefaultRetailerPriceTypes(),
   })
}

const initializeSection =()=> {     我不确定如何在这里使用useState ... }

1 个答案:

答案 0 :(得分:0)

依赖项数组为空的UseEffect与componentDidMount()相同。

如果有useEffect内部的函数,则使用useEffect可能会得到详尽的下降警告。有几种不同的处理方法。他们将在警告中为您提供示例,或者您可以将函数包装在useCallback挂钩中以进行处理。或者,如果您确定不需要依赖项,则可以禁用此警告或将其忽略。

如果要使用挂钩设置状态,则必须使用useState挂钩。因此您的组件将如下所示:

import React, {useState} from 'react'

const YourComponent = () => {
  const [selectedRetailers, setSelectedRetailers] = useState(yourIntialValue);
  const [selectedPriceTypes, setselectedPriceTypes] = useState(yourIntialValue);

  useEffect( () => {
   setSelectedRetailers(getAllConnectedRetailerIds());
   setSelectedPriceTypes(getDefaultRetailerPriceTypes());
  }, []);

  return (
    <div></div>
  )
}

此外,您还可以像使用基于类的状态对象一样设置useState:

const [state, setState] = useState({
  //your state values
  selectedRetailers: initialValue,
  selectedPriceTypes: initialValue,
});

然后您可以像这样设置state:

setState({
  ...state,
  selectedRetailers: newValue,
  selectedPriceTypes: newValue
});