网站是用react框架开发的,想用document.getElementById("name").value="zero"的方式进行表单赋值,表面上是成功了,单提交的时候提示字段为空,其实是没有赋值成功的,想请教一下,怎么用js的方式进行赋值?
网站是用react框架开发的,想用document.getElementById("name").value="zero"的方式进行表单赋值,表面上是成功了,单提交的时候提示字段为空,其实是没有赋值成功的,想请教一下,怎么用js的方式进行赋值?
import React, { useRef } from 'react';
const Input = () => {
const input = useRef();
const setValue = () => document.querySelector('#input').value = 'value';
const getValue = () => console.log(input.current.value);
return (
<div>
<input id="input" ref={input} />
<button type="button" onClick={setValue}>set value</button>
<button type="button" onClick={getValue}>get value</button>
</div>
);
}
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
4 回答1.7k 阅读
6 回答1.1k 阅读
首先你要区分
受控组件
和非受控组件
,你这么赋值的话,非受控组件是可以被改变,那么你提交表单的时候也应该用
document.getElementById("name").value
之类的方法拿到value,而不是用默认的方式拿value.要么就用state.value来进行组件值的控制,那么改变state.value自然组件展示也改变了, 提交表单时,就用state.value取到对应值.