【发布时间】:2021-02-24 10:03:54
【问题描述】:
我正在尝试使用 Reactstrap 8.5.1 innerRef 属性和 useRef() 来在模态打开时将输入集中在模态中。下面的代码显示了打开模态的按钮,但是单击时出现错误“无法读取 null 的属性'焦点'”。它还将 inputRef 写入控制台,这表明 .current 为空。
我尝试了各种方法来设置 innerRef,但似乎没有任何效果。如果有人能指出我所缺少的,我将不胜感激。
import React, { useState, useRef, useEffect } from 'react';
import { Modal, ModalHeader, ModalBody, ModalFooter, Button, Input } from 'reactstrap';
export const ModalSave = (props) => {
const [modalIsOpen, setModalIsOpen] = useState(false);
const toggle = () => setModalIsOpen(!modalIsOpen);
const inputRef = useRef(null);
useEffect(() => {
console.log(inputRef);
if (modalIsOpen === true) {
inputRef.current.focus();
}
}, [modalIsOpen]);
return (
<div>
<Button
onClick={() => { setModalIsOpen(true); }}
>Save</Button>
<Modal isOpen={modalIsOpen} toggle={toggle}>
<ModalHeader toggle={toggle}>Save</ModalHeader>
<ModalBody>
Name:
<Input
innerRef={inputRef.current}
/>
</ModalBody>
<ModalFooter>
<Button>Save</Button>
<Button onClick={toggle}>Close</Button>
</ModalFooter>
</Modal>
</div>
);
}
【问题讨论】:
标签: reactjs reactstrap