useEffect():如何重构componetDidUpdate?

时间:2019-05-03 13:38:46

标签: reactjs react-hooks

所以,我定义了一个状态:

const [quantity, setQuantity] = useState(1);

我在班级组件中对其进行了如下更新:

    componentDidUpdate(prevProps, prevState) {
        if (this.props.cartItem.quantity !== prevProps.cartItem.quantity) {
            let quantity = this.props.cartItem.quantity;
            this.setState((state, props) => {
                return {
                    quantity
                }}
            );
        }
    }

    componentDidMount() {
        this.setState((state, props) => {
            return {
                quantity: props.cartItem.quantity
            }}
        );       
    }

我通过以下操作实现的componentDidMount方面:

    useEffect(() => {
      setQuantity(parseInt(props.cartItem.quantity));
    });

如何使用useEffect()实现相同的componentDidUpdate()功能?

1 个答案:

答案 0 :(得分:1)

您只需在useEffect挂钩中添加一个“依赖项”即可。

const { cartItem } = props;

useEffect(() => {
  setQuantity(parseInt(cartItem.quantity));
}, [cartItem]);

这意味着,每当cartItem道具更改时,都会触发您的状态更新,包括组件安装状态。