Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 组件正在将电子邮件类型的非受控输入更改为受控。输入元件不应从非受控切换到受控_Javascript_Reactjs - Fatal编程技术网

Javascript 组件正在将电子邮件类型的非受控输入更改为受控。输入元件不应从非受控切换到受控

Javascript 组件正在将电子邮件类型的非受控输入更改为受控。输入元件不应从非受控切换到受控,javascript,reactjs,Javascript,Reactjs,我犯了这个错误,我是新手。我看过其他帖子,但仍然无法解决这个问题。我们将不胜感激。谢谢 警告:组件正在将电子邮件类型的非受控输入更改为受控。输入元件不应从非受控切换到受控(反之亦然)。在组件的使用寿命内,决定使用受控或非受控输入元件。更多信息 输入中(通过编辑创建) 在div中(通过编辑创建) 在div中(通过编辑创建) 表单中(通过编辑创建) 在div中(通过编辑创建) 编辑中 从“React”导入React 从“react dom”导入react dom 导出默认类编辑扩展React.Com

我犯了这个错误,我是新手。我看过其他帖子,但仍然无法解决这个问题。我们将不胜感激。谢谢

警告:组件正在将电子邮件类型的非受控输入更改为受控。输入元件不应从非受控切换到受控(反之亦然)。在组件的使用寿命内,决定使用受控或非受控输入元件。更多信息 输入中(通过编辑创建) 在div中(通过编辑创建) 在div中(通过编辑创建) 表单中(通过编辑创建) 在div中(通过编辑创建) 编辑中

从“React”导入React
从“react dom”导入react dom
导出默认类编辑扩展React.Component{
构造函数(){
超级();
这个州={
名称:“”,
电子邮件:“”,
密码:“”,
};
}
组件willmount(){
设id=this.props.id;
get('/api/users/'+id)。然后(response=>{
var user=response.data;
这是我的国家({
name:user.name,
电子邮件:user.email,
})
}).catch(错误=>{
console.log(错误)
})
}
手形变化(e){
这是我的国家({
名称:e.target.value
})
}
handleEmailChange(电子邮件){
这是我的国家({
电子邮件:e.target.value
})
}
handlePasswordChange(e){
这是我的国家({
密码:e.target.value
})
}
handleSubmit(e){
e、 预防默认值();
console.log(this.state)
post('/api/users',this.state)。然后(response=>{
console.log(响应)
})。然后(错误=>{
console.log(错误)
})
}
render(){
返回(
添加新用户
姓名:
电邮:
密码:
使现代化
)
}
}
if(document.getElementById('edit')){
变量id=$(“#编辑”).data(“id”);
ReactDom.render(,document.getElementById('edit'))
}

发生错误是因为在componentDidMount中执行
设置状态时,返回的值似乎是
未定义的

if(user.name!==undefined && user.email!==undefined){
    this.setState({
        name: user.name,
        email: undefined,
    })
}

这将防止状态中的值变得未定义,并且您将不再有该错误。

发生该错误是因为当您在componentDidMount内执行
设置状态时,返回的值似乎是
未定义的

if(user.name!==undefined && user.email!==undefined){
    this.setState({
        name: user.name,
        email: undefined,
    })
}

这将防止状态中的值变得未定义,并且您将不再存在该错误。

您在渲染时使用“值”属性设置默认值,它使您的输入受控制,然后在更新状态时,您尝试再次更改输入值,这将使其不受控制。基本上,为了使代码成功,您需要在呈现的代码中使用defaultValue属性,而不是value attr。因为当您将值设置为从html输入时,以后无法更改它

对输入元素执行以下操作:

<input type="email" className="form-control" id="email" placeholder="Enter email" defaultValue={this.state.email} />

以下是react docs on issue的来源:


渲染时使用“值”属性设置默认值,使输入受控,然后在更新状态时尝试再次更改输入值,这将使输入不受控。基本上,为了使代码成功,您需要在呈现的代码中使用defaultValue属性,而不是value attr。因为当您将值设置为从html输入时,以后无法更改它

对输入元素执行以下操作:

<input type="email" className="form-control" id="email" placeholder="Enter email" defaultValue={this.state.email} />

以下是react docs on issue的来源:


很可能是
e.target.value
未定义的值
空值
?实际上我正在做crud,这是更新表单。。在componentWillMount()函数中,response.data给出了{name,email}的json响应。但是当我尝试使用user.name设置它时,它会给出错误。你知道吗?很可能,
e.target.value
的值是未定义的
还是
空的
?实际上我正在做crud,这是更新表单。。在componentWillMount()函数中,response.data给出了{name,email}的json响应。但是当我尝试使用user.name设置它时,它会给出错误。你知道吗?错误已经消失了,但我必须在输入字段中显示响应,但没有显示。实际上,我在做crud,这是更新表。。在componentWillMount()函数中,response.data给出了{name,email}的json响应。但是当我尝试使用user.name设置它时,它会给出错误。你知道吗?这是针对非受控部件的。他所拥有的是一个受控组件,他需要它成为一个受控组件,因为他必须稍后发布数据。错误消失了,但我必须在输入字段中显示响应,但没有显示。实际上,我在做crud,这是更新表。。在componentWillMount()函数中,response.data给出了{name,email}的json响应。但是当我尝试使用user.name设置它时,它会给出错误。你知道吗?这是针对非受控部件的。他所拥有的是一个受控组件,他需要它成为一个受控组件,因为他必须稍后发布数据。错误消失了,但我必须在输入字段中显示响应,但没有显示。实际上,我在做crud,这是更新表。。在componentWillMount()函数中,response.data给出