React ref为空问题

看代码:

import { useState, createRef } from 'react';
const comp = ()=>{
    const [visible, setVisible] = useState(false);
    const formRef = createRef<any>()
    const columns = [
        {title:'名称',dataIndex:'name'},
        {title:'actions',render:(text,record)=>{
            return <Button onClick={updateForm.bind(null,record.id)}>
                    修改
                </Button>
        }}
    ]
    const updateForm = (id)=>{
        setVisible(true);
        console.log(formRef.current); // 是null,为什么?
    };
    const modalOk = async () => {
        console.log(formRef.current); // 它却有值,为什么?
         setVisible(false);
      };
    return ( 
        <>
          <Table
            size="small"
            rowKey="id"
            dataSource={dataSource}
            columns={columns}
          />
          <Modal
            title="添加数据"
            visible={visible}
            onOk={modalOk}
            destroyOnClose
            onCancel={() => {
              setVisible(false);
            }}
          >
        </>
    )
}

感谢各位朋友能看完代码,本人初学react,如果有除了bug之外不合适的地方也可以点出来。我会虚心接受的。

阅读 5.5k
2 个回答

我没有仔细看,但是之前遇到个差不多的。就是你的ref绑定的是modal吗,你第一次渲染的时候modal还没有出来,所以没有那个节点,ref为空,当你点击之后modal弹出来了,ref就不为null了,我也是初学者说一下自己的看法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题