Abi*_*idh 5 reactjs react-hooks
我想自定义文件上传的输入标签。这是我的代码。这里对于属性 htmlFor,我给出了输入标签的 id。然后它就可以工作了。但是我想使用 useRef ref。我怎样才能做到这一点 ?如果我按照下面的方法,如果我多次渲染这个组件就会有问题。对 ?
const App = () => {
const inputRef = useRef(null);
const [file, setFile] = useState(null);
return (
<>
<input
ref={inputRef}
accept=".pdf"
style={{ display: "none" }}
id="raised-button-file"
multiple
type="file"
onChange={e => {
setFile(e.target.files[0]);
}}
/>
<label htmlFor="raised-button-file">
<button component="span">
<span>file</span>
</button>
</label>
</>
);
};
Run Code Online (Sandbox Code Playgroud)
使用<label>标记的另一种方法是将您的元素包装为子元素而不id为其指定 an 。
<label>
<input
accept=".pdf"
style={{ display: "none" }}
multiple
type="file"
onChange={e => {
setFile(e.target.files[0]);
}}
/>
<span>File</span>
</label>
Run Code Online (Sandbox Code Playgroud)
如果你更喜欢用你的 ref 打开你的文件输入对话框,你可以这样做。
const handleOpenFileInput = () => {
inputRef.current.click();
};
Run Code Online (Sandbox Code Playgroud)
<label onClick={handleOpenFileInput}>
<button>file</button>
</label>
<input
ref={inputRef}
accept=".pdf"
style={{ display: "none" }}
multiple
type="file"
onChange={e => {
setFile(e.target.files[0]);
}}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2402 次 |
| 最近记录: |