Javascript 基于另一个状态属性的更改更改组件状态属性

Javascript 基于另一个状态属性的更改更改组件状态属性,javascript,reactjs,react-hooks,jsx,Javascript,Reactjs,React Hooks,Jsx,我有一个状态属性,它根据用户输入的输入值(数量)进行更改(称为firstState.a)。我的问题是如何根据输入的值更改另一个状态属性(fee,secondState.b)。我想我可以有条件地设置UseEffect中第二个状态的状态,方法是使用firstState.a作为依赖项,每当UseEffect发生变化时触发它。我不明白的是什么 伪码 useEffect(()=>{ if(...) { setSecondState(secondstate.b) } else {

我有一个状态属性,它根据用户输入的输入值(数量)进行更改(称为firstState.a)。我的问题是如何根据输入的值更改另一个状态属性(fee,secondState.b)。我想我可以有条件地设置UseEffect中第二个状态的状态,方法是使用firstState.a作为依赖项,每当UseEffect发生变化时触发它。我不明白的是什么

伪码

useEffect(()=>{
  if(...) {
    setSecondState(secondstate.b)
  } else { 
    setSecondState(secondstate.b)
  }
}, [firstState.a])

我认为这是你需要使用它的方式,当金额发生变化时,useeffect将被触发,如果金额发生任何变化,它也将更新费用。或者,您也可以在更新第一个状态时设置第二个状态,使其与onChange一起工作

useEffect(() => {
        setFee(amount)

    }, [amount)])

让我们想象一下,您有两种不同的状态:

const [stateA, setStateA] = useState('');
const [stateB, setStateB] = useState('');
装载后要运行的第一个效果是,让我们触发
stateA
更改(理想情况下不是这样,但为了示例起见,请将其保留在这里-可能来自API调用,可能在用户的
onchange
事件(例如输入字段)上触发):

第二个效果将在
stateA
根据依赖项数组及其值进行更改后触发。您可以使用首选值调用
setStateB

useEffect(() => {
   if (stateA === 'value') {
      setStateB('first condition applied');
   } else {
      setStateB('second condition applied');
   }
}, [stateA]);
功能组件主体的完整示例:

const [stateA, setStateA] = useState('');
const [stateB, setStateB] = useState('');

useEffect(() => {
  setStateA('value');
}, []);

useEffect(() => {
   if (stateA === 'value') {
      setStateB('first condition applied');
   } else {
      setStateB('second condition applied');
   }
}, [stateA]);

在的文档中有很好的进一步解释。

您可以通过将if语句放入其中来进一步改进它。
const [stateA, setStateA] = useState('');
const [stateB, setStateB] = useState('');

useEffect(() => {
  setStateA('value');
}, []);

useEffect(() => {
   if (stateA === 'value') {
      setStateB('first condition applied');
   } else {
      setStateB('second condition applied');
   }
}, [stateA]);