使用 React Hooks 时如何替换 this.setState?
How do I replace this.setState when using React Hooks?
我正在尝试使用 React Hooks 将我的 class 组件转换为功能组件。
我不确定如何处理这段代码:
this.setState({
pinError: !isValidPin,
pin: updatedPin,
});
我在想也许完全删除它?这是我目前所拥有的:
const PinInput = ({pinError, pin, isInputActive}) => {
const handleValidatePinDigit = (e) => {
const isValidPin = isValidPinDigit(e.target.value);
const updatedPin = isValidPin ? e.target.value : '';
this.setState({
pinError: !isValidPin,
pin: updatedPin,
});
if (get(updatedPin, 'length', '') === 4) {
onComplete(updatedPin);
} else {
onChange(updatedPin);
}
};
};
试试这个:
const[pinError, setPinError] = useState(true);
const[pin, setPin] = useState('')
使用 useState 钩子来实现你的目标。
尝试:
const [pinError, setPinError] = useState(false);
const [pin, setPin] = useState('')
setPinError(!isValidPin)
setPin(updatedPin)
编码愉快:)
您不能使用 this.setState 功能。
像这样尝试。
import React, { useState } from 'react';
const PinInput = ({pinError, pin, isInputActive}) => {
const [pinError, setPinError] = useState(pinError);
const [updatedPin, setUpdatedPin] = useState('');
const handleValidatePinDigit = (e) => {
const isValidPin = isValidPinDigit(e.target.value);
const updatedPin = isValidPin ? e.target.value : '';
setPinError(!isValidPin);
setUpdatedPin(updatedPin);
if (get(updatedPin, 'length', '') === 4) {
onComplete(updatedPin);
} else {
onChange(updatedPin);
}
};
};
这应该可以帮助您了解如何使用 useState 挂钩初始化、设置和使用状态。也请阅读评论。
import React, { useState } from 'react';
// pinError & pin are deconstructed state passed down and are used as the initial values of your pinError & pin state
const PinInput = ({pinError, pin}) => {
const [newPinError, setNewPinError] = useState(pinError); // initialize state
const [newPin, setNewPin] = useState(pin);
const handleValidatePinDigit = (e) => {
const isValidPin = isValidPinDigit(e.target.value);
const updatedPin = isValidPin ? e.target.value : '';
setNewPinError(!isValidPin); // set state
setNewPin(updatedPin);
};
// this printPin function shows how to use state
const printPin = () => {
if (newPinError) {
console.log("[pinError] Your invalid pin is: " + newPin);
} else {
console.log("Your valid pin is: " + newPin);
}
}
};
我正在尝试使用 React Hooks 将我的 class 组件转换为功能组件。 我不确定如何处理这段代码:
this.setState({
pinError: !isValidPin,
pin: updatedPin,
});
我在想也许完全删除它?这是我目前所拥有的:
const PinInput = ({pinError, pin, isInputActive}) => {
const handleValidatePinDigit = (e) => {
const isValidPin = isValidPinDigit(e.target.value);
const updatedPin = isValidPin ? e.target.value : '';
this.setState({
pinError: !isValidPin,
pin: updatedPin,
});
if (get(updatedPin, 'length', '') === 4) {
onComplete(updatedPin);
} else {
onChange(updatedPin);
}
};
};
试试这个:
const[pinError, setPinError] = useState(true);
const[pin, setPin] = useState('')
使用 useState 钩子来实现你的目标。
尝试:
const [pinError, setPinError] = useState(false);
const [pin, setPin] = useState('')
setPinError(!isValidPin)
setPin(updatedPin)
编码愉快:)
您不能使用 this.setState 功能。 像这样尝试。
import React, { useState } from 'react';
const PinInput = ({pinError, pin, isInputActive}) => {
const [pinError, setPinError] = useState(pinError);
const [updatedPin, setUpdatedPin] = useState('');
const handleValidatePinDigit = (e) => {
const isValidPin = isValidPinDigit(e.target.value);
const updatedPin = isValidPin ? e.target.value : '';
setPinError(!isValidPin);
setUpdatedPin(updatedPin);
if (get(updatedPin, 'length', '') === 4) {
onComplete(updatedPin);
} else {
onChange(updatedPin);
}
};
};
这应该可以帮助您了解如何使用 useState 挂钩初始化、设置和使用状态。也请阅读评论。
import React, { useState } from 'react';
// pinError & pin are deconstructed state passed down and are used as the initial values of your pinError & pin state
const PinInput = ({pinError, pin}) => {
const [newPinError, setNewPinError] = useState(pinError); // initialize state
const [newPin, setNewPin] = useState(pin);
const handleValidatePinDigit = (e) => {
const isValidPin = isValidPinDigit(e.target.value);
const updatedPin = isValidPin ? e.target.value : '';
setNewPinError(!isValidPin); // set state
setNewPin(updatedPin);
};
// this printPin function shows how to use state
const printPin = () => {
if (newPinError) {
console.log("[pinError] Your invalid pin is: " + newPin);
} else {
console.log("Your valid pin is: " + newPin);
}
}
};