react中受控组件相关的warning
在表单中,报如下的错,意思是非受控的输入框变成了受控的,报错信息如下
Warning: A component is changing an uncontrolled input of type text to be controlled.Input elements should not switch from uncontrolled to controlled (or vice versa).
Decide between using a controlled or uncontrolled input element for the lifetime of the component.
我写的代码如下:
<input
className="form-control"
name="productName"
placeholder="请输入商品名称"
value={this.state.detail.productName || ""}
onChange={(e)=>{this.inputValueChange(e)}}
/>
该元素将value绑定在this.state.detail对象中,obj对象在componentDidMount生命周期中进行初始化
原因:
因为在第一次render组件时,this.state.obj={},于是this.state.detail.productName为undefined,于是input接受到的就是value={undefined}
当ReactDOM检测这个元素是不是受控时,它的判断条件是value!=null,注意是!=而不是!==,
又由于undefined==null,所以判断该组件是非受控组件
而我又在input元素上绑定了onChange方法改变了value,将它变成了受控组件,所以产生了报错信息
解决办法
在constructor中修改this.state,给detail设置一个默认的初始值,如下所示
this.state={
detail:{
productName: '',
}
}
react中受控组件相关的warning的更多相关文章
- react中 受控组件和 非受控组件 浅析
一 受控组件 顾名思义,受控 也就是能够被控制,简而言之也就是 该组件ui的显示或者内部state逻辑的变化依赖外部的 props的传入. 二 非受控组件 顾名思义,非受控,也就是内部的视图变化,st ...
- React中父组件与子组件之间的数据传递和标准化的思考
React中父组件与子组件之间的数据传递的的实现大家都可以轻易做到,但对比很多人的实现方法,总是会有或多或少的差异.在一个团队中,这种实现的差异体现了每个人各自的理解的不同,但是反过来思考,一个团队用 ...
- React中父子组件间的通信问题
1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)
- 九、React中的组件、父子组件、React props父组件给子组件传值、子组件给父组件传值、父组件中通过refs获取子组件属性和方法
一.概述 React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. [父子组件]:组件的相互调用中,我们把调用者称为父 ...
- React中父子组件数据传递
Vue.js中父子组件数据传递:Props Down , Events Up Angular中父子组件数据传递:Props Down, Events Up React中父子组件数据传递:Prop ...
- React:受控组件与非受控组件混用实战 - 译文
原文链接:React: hybrid controlled components in action 受控组件 非受控组件 混用受控组件和非受控组件 原则一 原则二 原则三 原则四 实施方案 总结 F ...
- 什么是React中的组件
组件就是页面上的一部分.如图,左边是一个网页.右边是对应的一个组件图.我们可以把一个大的网页拆分成很多小的部分.比如标题部分,对应一个组件,就是标题组件.搜索部分,对应的组件就是搜索组件.而这个搜索组 ...
- React中父子组件传值
一.首先我们先来看父组件向子组件传值 1.1 我们要明白父组件 --> 子组件 是通过props这个属性来传值的 我们来看父组件的代码 import React from 'react'; im ...
- react中父组件给子组件传值
子组件 state = { msg: 'a' } render(){ return<h1>{this.state.msg}</h1> } setInfo = (val)=> ...
随机推荐
- 湘潭校赛 Bob's Problem
Bob's Problem Accepted : 18 Submit : 115 Time Limit : 1000 MS Memory Limit : 65536 KB 题目描述 Bob今 ...
- CRC算法
https://blog.csdn.net/dream_1996/article/details/73588269
- BZOJ3672: [Noi2014]购票(dp 斜率优化 点分治 二分 凸包)
题意 题目链接 Sol 介绍一种神奇的点分治的做法 啥?这都有根树了怎么点分治?? 嘿嘿,这道题的点分治不同于一般的点分治.正常的点分治思路大概是先统计过重心的,再递归下去 实际上一般的点分治与统计顺 ...
- Android ListView无数据项时提示
只需要调用在代码中调用setEmptyView(View emptyView)设置ListView为空时显示这个TextView即可. 布局文件 <?xml version="1.0& ...
- Oracle数据库日期格式转换操作
1. 日期转化为字符串 (以2016年10月20日为例) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') strDateTime from dual; ...
- top,job,user,file,alias
1.系统进程 2.系统资源管理 3.作业管理 4.用户管理 5.文件权限 6.别名定义 一.系统进程 1.进程的定义 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了 ...
- CSS3 响应式web设计,CSS3 Media Queries
两种方式,一种是直接在link中判断设备的尺寸,然后引用不同的css文件: <link rel="stylesheet" type="text/css" ...
- KT_登录_流程图
一.需求 关于系统登录功能,需求如下:1.登录需要输入用户名.密码2.如果连续密码输入错误4次,则自动锁定账号5分钟(也就是说5分钟之内不能再登录) 请根据以上需求,画一个登录操作流程图 二.绘图 版 ...
- 自己搭建anki服务器
目录 centos端 电脑客户端 安卓端 centos端 # 安装服务 yum -y install python-setuptools easy_install Ankiserver mkdir - ...
- asp.net 一般处理程序实现网站验证码
使用VerifyCode.ashx一般处理程序生成验证码,实现如下: using System; using System.Drawing; using System.Web; using Syste ...