react中点击按钮不能获取最新的state时候

在这个问题中,用户希望在点击确认按钮时触发handleChange函数,并且能够正确获取到最新的bzText值。最初的代码中,在handleOpen函数中弹出一个确认框,并在确认框的onOk回调函数中调用handleChange函数。然而,由于组件传值问题,导致在onOk回调函数中无法获取到最新的bzText值。


const handleOpen = () => {
  Modal.confirm({
    title: `是否申请解锁经办人姓名`,
    content: (
      <div className={styles.bz}>
        备注:
        <Input
          onChange={(e) => {
            setBzText(e?.target?.value);
          }}
          placeholder="请输入"
        />
      </div>
    ),
    cancelText: '取消',
    okText: '确认',
    onOk() {
      handleChange('change', bzText);
    }
  });
};

const handleChange = (type, bzText) => {
  console.log(bzText, 'bzText');
};

// bzText是用useState声明的

为了解决这个问题,可以使用useRef来创建一个引用(bzTextRef),并在输入框的onChange事件中更新这个引用的值。然后,在确认框的onOk回调函数中通过bzTextRef.current来获取最新的bzText值,从而确保在handleChange函数内部能够正确访问到最新的值。

import { useRef } from 'react';

const YourComponent = () => {
  const bzTextRef = useRef(null);

  const handleOpen = () => {
    Modal.confirm({
      title: `是否申请解锁经办人姓名`,
      content: (
        <div className={styles.bz}>
          备注:
          <Input
            onChange={(e) => {
              bzTextRef.current = e?.target?.value;
            }}
            placeholder="请输入"
          />
        </div>
      ),
      cancelText: '取消',
      okText: '确认',
      onOk() {
        handleChange('change', bzTextRef.current);
      }
    });
  };

  const handleChange = (type, bzText) => {
    console.log(bzText, 'bzText');
  };

  // bzText是用useState声明的
};

export default YourComponent;

综上所述,通过使用useRef来存储bzText的引用,可以解决在确认框中无法获取到最新值的问题。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 21:36:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 21:36:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 21:36:01       82 阅读
  4. Python语言-面向对象

    2024-03-18 21:36:01       91 阅读

热门阅读

  1. 大模型学习中,为什么要把AI当人看?

    2024-03-18 21:36:01       50 阅读
  2. server.servlet.path和#server.servlet.context-path的区别

    2024-03-18 21:36:01       45 阅读
  3. 【C#语言入门】19. 什么是类

    2024-03-18 21:36:01       38 阅读
  4. 使用TOPDN做L53免费域名DNS解析方法

    2024-03-18 21:36:01       47 阅读
  5. Rust矢量数据库领域的优势

    2024-03-18 21:36:01       45 阅读
  6. 【Python学习笔记】Python logging模块的学习

    2024-03-18 21:36:01       38 阅读
  7. 算法笔记p142快速排序

    2024-03-18 21:36:01       41 阅读
  8. docker服务起不来原因及解决

    2024-03-18 21:36:01       39 阅读
  9. JDBC的概念

    2024-03-18 21:36:01       43 阅读