【发布时间】:2021-10-17 09:56:23
【问题描述】:
我有一个简单的表单,其中包含我无法输入的输入字段。我首先认为问题在于将输入设置为只读的onChange 或value 道具,但事实是我无法输入浏览器建议并且状态更新完美(See gif here)就是这样即使重新加载页面,我也不会让我用键盘打字。
我还有一个登录页面可以正常工作,除非我注销并重定向回该页面,在我重新加载页面之前它不会工作,现在它可以工作了。
<input
value={name}
onChange={handleChange}
name="name"
/>
const [name, setName] = useState("");
const handleChange = (e:any) => {
setName(e.target.value);
}
奇怪的是它处于只读状态,但是当我使用浏览器建议时,它可以工作并更新状态。
这是整个组件:
import React, { useEffect, useState } from 'react';
import { useForm } from '../../utils/useForm';
import { CubeType } from '../../interfaces';
//import useStore from '../store/Store';
import { Modal, Button, Row, Col, FormGroup, FormLabel, FormControl } from 'react-bootstrap';
type Props = {
show: Boolean,
onClose: () => void,
cubeTypes: CubeType[]
};
const ModalTimelist = (props: Props) => {
//const store = useStore();
const [values, handleChangee] = useForm({ cubeType: 1, name: '' });
const [name, setName] = useState("");
const handleChange = (e:any) => {
setName(e.target.value);
}
useEffect(() => {
const modal = document.getElementsByClassName('modal')[0];
if(modal) modal.removeAttribute('tabindex');
}, [props.show]);
return (
<>
<Modal show={props.show} onHide={ props.onClose }>
<Modal.Header>
<Modal.Title>Timelist { name }</Modal.Title>
</Modal.Header>
<Modal.Body>
<Row>
<Col md="3">
<FormGroup>
<FormLabel>Cube Type</FormLabel>
<select
value={values.cubeType}
onChange={ handleChangee }
className="form-select"
name="cubeType"
>
{props.cubeTypes.map((it, idx) => {
return (<option value={ idx } key={"cube"+idx}>{it.name}</option>);
}) }
</select>
</FormGroup>
</Col>
<Col md="9">
<FormGroup>
<FormLabel>Name</FormLabel>
<FormControl
value={name}
onChange={handleChange}
name="name"
/>
</FormGroup>
</Col>
</Row>
</Modal.Body>
<Modal.Footer>
<Button variant="success" onClick={() => props.onClose()}>
Save
</Button>
<Button variant="outline-danger" onClick={() => props.onClose()}>
Cancel
</Button>
</Modal.Footer>
</Modal>
</>
);
}
export default ModalTimelist;
【问题讨论】:
-
你可以为 handleChange 添加你的代码吗?
-
您将需要发布 handleChange 以及如何存储状态
-
他们破解了控制台
-
是的,检查了控制台,没有错误
-
你有没有检查过改变事件是否被触发或不使用控制台有时它发生在 react-bootstrap 模式
标签: reactjs typescript next.js next-router