Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从服务器获取后,无法在Reactjs中编辑表单域

从服务器获取后,无法在Reactjs中编辑表单域
EN

Stack Overflow用户
提问于 2020-06-01 13:12:48
回答 2查看 1.5K关注 0票数 0

我在Reactjs中有一个用户编辑页面,我在其中获取用户详细信息并将其填充到相应的输入字段中。问题是在获取和显示数据之后,我无法编辑字段。

我的代码是:

代码语言:javascript
运行
AI代码解释
复制
function EditProfile(props) {
    const [user, setUser] = useState()
    useEffect(() => {
        const fetchUserInfo = async () => {
            const profileConfig = {
                method: 'GET',
                headers: {
                    'Authorization': 'Bearer ' + auth.token
                }
            };
            fetch(`http://localhost:4000/api/v1/user/me`, profileConfig)
            .then(response => response.json())
            .then(response => {
                console.log("response: ", response.user);
                if (response.success === true) {
                    setUser(response.user)
                } else {
                    alert(response.message)
                }
            },
            (error) => {
                alert('User fetching faied: ' + error)
            })
        }
        fetchUserInfo()
    }, [])

    return (
       <form>
           <input type="text" value={user.name} name="name" />
       </form>
    )
}

对应的名称将显示在此输入字段中,但不可编辑。如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-01 13:27:21

您尚未在input上添加React建议将其设置为controlled componentonChange函数。拥有受控输入的好处是,您可以在整个React组件中使用该值,并且不需要在输入时触发事件或访问DOM来获取该值。

如果你不想创建一个受控组件,你可以这样做:

代码语言:javascript
运行
AI代码解释
复制
<input type="text" defaultValue={user.name} name="name" />

使用defaultValue而不是value。因为在React呈现生命周期中,表单元素上的value属性将覆盖DOM中的值。这样,您希望React指定初始值,但保留后续更新不受控制,从而创建一个uncontrolled component

如果您创建一个受控组件,则必须指定一个函数来处理更改,并通过@Vaibhav:https://stackoverflow.com/a/62133180/4207394将其设置为如下答案所指定的状态

票数 1
EN

Stack Overflow用户

发布于 2020-06-01 13:20:23

在React中,受控组件需要值和更改处理程序。

代码语言:javascript
运行
AI代码解释
复制
function EditProfile(props) {
    const [user, setUser] = useState({name: ''})

    useEffect(() => {
        /*
          ....
        */
    }, [])

    const handleChange = e => {
       setUser({...user, name: e.target.value})
    }

    return (
       <form>
           <input type="text" onChange={handleChange} value={user.name} name="name" />
       </form>
    )
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62133040

复制
相关文章
Java 在 PDF 中添加表单域
PDF表单域是指用户在PDF文件中可以自主进行填写、选择等操作的区域,其主要目的是采集用户输入或选择的数据。常见的表单域包括文本框、单选按钮、复选框、列表框和组合框等。文本将介绍如何使用 Free Spire.PDF for Java在Java程序中创建PDF表单域。
用户1289394
2020/12/18
3.9K0
【6】VScode 无法在终端输入问题,提示:无法在只读编辑器中编辑
2.在设置中输入 run code config 找到里面的 run in terminal 打勾即可,往下滑动几秒就看到了
汀丶人工智能
2022/12/21
7.3K0
【6】VScode 无法在终端输入问题,提示:无法在只读编辑器中编辑
解决kindeditor中ajax提交表单无法获取数据的问题
在上面使用了afterBlur 方法做了一个处理,该方法是当编辑框失焦的是触发的,然后再去做数据同步.
飞奔去旅行
2019/06/13
3.5K0
puppeteer 无法获取跨域iframe内容解决
puppeteer访问的页面存在跨域iframe时,会存在无法获取iframe内容的问题。解决方法,puppeteer加上启动参数
ACK
2020/10/30
4.8K0
CDN配置后无法获取真实ip
这篇文章最后修改于 2022-06-10 日,距今已有 166 天,请注意甄别内容是否已经过时!
羽翼博客
2022/11/28
4.9K0
CDN配置后无法获取真实ip
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
当商品设置为立即上架时,通过审核就进入上架状态,当设置为保存时,通过审核就进入未上架状态。
用户8832582
2021/07/13
3.7K0
在WebFlux下从ServerWebExchange中获取参数
获取参数方式和web包类似,直接在controller方法参数的位置填上serverHttpRequst,框架即可自动将请求注入,但是这里serverHttpRequst获取的请求仅限于普通请求的body中的内容,以及methed方法这些。但是,前端如果是通过form-data方式传参过来, serverHttpRequst 得到的是body是null。因此必须拿到更上一级的请求内容ServerWebExchange。通过ServerWebExchange获取form-data的参数再加以验证。
Diuut
2022/11/22
12.3K0
【HTML】HTML 表单 ⑤ ( form 表单域 )
从 input 表单 , textarea 文本域 , select 下拉菜单 中收集了用户信息 , 需要通过
韩曙亮
2023/03/30
4K0
【HTML】HTML 表单 ⑤ ( form 表单域 )
在ReactJS体验ES6中的class类
你也可以使用类表达式定义类。但是不同于类表达式,类声明不允许再次声明已经存在的类,否则将会抛出一个类型错误。
JavaEdge
2021/03/15
1.8K0
enctype="multipart/form-data"的表单无法获取表单中除了type=file以外的其他参数 commons-fileupload 获取除file外其他参数
大家会发现,enctype="multipart/form-data"的表单提交后,在后台无法用传统的request.getParameter获取其他参数 我个人理解是因为每个参数都用流的形式处理了,需要特别的方式才能获取 本文使用commons-fileupload 获取除file外其他参数 HTML代码: <form id="uploadFileForm" action="UploadServlet" target="hiddenFrame" method
用户1258909
2018/07/03
1.8K0
winserver2016无法从WSUS获取补丁
镜像:SW_DVD9_Win_Svr_STD_Core_and_DataCtr_Core_2016_64Bit_English_-2_MLF_X21-22843
全栈程序员站长
2022/08/23
1.4K0
winserver2016无法从WSUS获取补丁
在 Emacs 中编辑 crontab
一般来说,编辑 crontab 时可以用 crontab -e ,它会读取 EDITOR 环境变量来决定需要打开的编辑器,比如:
飞驰的西瓜
2023/03/01
6730
在 Emacs 中编辑 crontab
[MySQL] macOS 下安装MySQL后无法在系统配置中打开
错误提示:Could not load MySQL preference pane.(由于我的是英文系统,提示的是英文,中文的提示预计不同)
用户2353021
2020/05/11
2.7K0
[MySQL] macOS 下安装MySQL后无法在系统配置中打开
java无法获取服务器上路径,JAVA获取服务器路径的步骤
ServletContext sc = (ServletContext)FacesContext.
全栈程序员站长
2022/09/15
1.9K0
在MySQL数据库中从表里随机获取数据
在很多应用场景下,我们需要从数据库表中随机获取一条或者多条记录。这里主要介绍对比两个方法。
Gujiu
2022/09/16
9.6K0
用JQUERY做大表单(多表单域)AJAX提交
function postData() { var post = ""; $(":text").each(function() { post += "&" + this.name + "=" + this.value; }); $(":password").each(function() { post += "&" + this.name + "=" + this.value; }
liulun
2022/05/09
1.3K0
reactjs
最近在学习react js,ReactJS是Facebook开发的用于构建用户界面的JAVASCRIPT库,利用其可以实现组件式开发。
用户1394570
2018/08/08
1.3K0
点击加载更多

相似问题

无法在reactjs中编辑表单输入。

12

ReactJS无法从表单输入中获取值

113

提交后,ReactJS无法从表单中获得值

33

无法使用defaultValue在ReactJS上编辑表单

10

ReactJS:从表单获取数据

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文