【问题标题】:React: How to use current State in eventsReact:如何在事件中使用当前状态
【发布时间】:2020-08-04 14:40:37
【问题描述】:

我有一个表格要提交。我的状态如下所示。

const [valueState, setValueState] = useState({
    dr_start_date: null,
    dr_end_date: null,
    s_key: "Staging + Commiting in report",
  });

使用setValueState 函数更新状态后,我想在onClick 事件上提交表单。 (我的点击功能)

const handleClick = () => {
    console.log(valueState);
  }

这个状态的输出是起始状态。谁能告诉我如何在函数事件中使用状态变量?

注意:这是我更新状态的方式。

function handleInputOne(event, element) {
    if (typeof event.persist === "function") event.persist();

    const { derive_value_from, ele_def } = element;

    setValueState((prevState) => {
      const newValueState = { ...prevState };
      newValueState[derive_value_from] = event.target.value;
      return newValueState;
    });
  }

【问题讨论】:

    标签: javascript reactjs dom-events


    【解决方案1】:

    只需像这样使用来自输入的事件:

    const handleChange = (event)=>{
    const {value,name} = event.target
    setValue(currentState=>{...currentState,[name]:value})
    }
    

    为输入组件添加 name 属性,如下所示:

    <input name="dr_start_date" value={value.dr_start_date} onChange={handleChange}/>
    

    并检查状态更新:

    useEffect(()=>{
    console.log(value)
    },[value])
    

    每次值更改时都会运行此效果。

    【讨论】:

    • 您好,先生,我已经实现了大致相同的代码行。其余的功能也可以正常工作。更新状态,一切正常。问题是当我想在一个函数下做```console.log(valueState)```时,它正在记录初始阶段。
    • 是的,当然反应不会立即更新状态,它是异步的。要检查状态变化,只需使用useEffect,检查编辑的代码。
    猜你喜欢
    • 2021-02-15
    • 2017-07-18
    • 2021-04-03
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2021-10-31
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多